zoukankan      html  css  js  c++  java
  • ruby关于flip-flop理解上一个注意点


    (1..20).each do |x| puts x if (x == 5) .. (x == 10) end

    上面的flip-flop的用法,你可以理解成 将 大于等于5和小于等于10的数字打印出来,也就是理解成  puts x if x >=5 && x <=10 ,但是注意你不能写成下面这样

    (1..20).each do |x|
      puts x if (x >= 5) .. (x <= 10)
    end

    如果写成绿色背景的代码,就会造成输出 大于等于5 小于等于20的数字

    问题2 flip-flop的用法

     puts x if (x == 5) .. (x == 10)

     在普通的判断条件上不等价于    puts x if x >=5 && x <=10

    def test(a)
        puts a if a == 5..a == 10
    end
    
    
    test(6)

    上面代码并不会打印出 6

    def test(a)
        puts a if a == 5..a == 10
    end
    
    
    test(10) #不输出
    test(5) #输出5
    test(8)#不输出

    但是你传入5是可以打印出5,但是传入其他则不打印

     如果修改成下面

    def test(a)
        puts a if a >= 5 && a <= 10
    end
    
    
    test(6)

    是可以打印出6的

    总结:flip-flop用法也只就在使用rang的block内,等价于  >= && <= 的理解

  • 相关阅读:
    discuz_ucenter_api_for_java的中文问题
    java的编码问题详解
    java的泛型的技巧
    向maven中央仓库提交jar
    Java并发之FutureTask
    java并发之Semaphore
    centos中JDK版本冲突的问题
    C++中嵌入Python
    boost::python的使用
    c++调用python引号的问题
  • 原文地址:https://www.cnblogs.com/or2-/p/5504486.html
Copyright © 2011-2022 走看看