ruby – Case语句和与整数的比较
发布时间:2020-12-17 04:02:47 所属栏目:百科 来源:网络整理
导读:我是 Ruby的新手,我不知道为什么它在这个case语句中表现得这样: def evaluate(number) case when number0 puts "#{number} is negative" when 0..50 puts "#{number} is between 0 and 51" when 51..100 puts "#{number} is between 51 and 100" else puts
我是
Ruby的新手,我不知道为什么它在这个case语句中表现得这样:
def evaluate(number) case when number<0 puts "#{number} is negative" when 0..50 puts "#{number} is between 0 and 51" when 51..100 puts "#{number} is between 51 and 100" else puts "#{number} is greater than 100" number = gets.chomp.to_i puts evaluate(number) 当传递-4例如它工作,但如果我添加数字到案件 def evaluate(number) case number when number<0 ... 然后它将负值解释为是否为else,并且打印输出大于100 这有什么理由吗?如果有人可以帮助我,我会非常感激 解决方法
试试这个.
def evaluate(number) case number when -Float::INFINITY...0 puts "#{number} is negative" when 0..50 puts "#{number} is between 0 and 51" when 51..100 puts "#{number} is between 51 and 100" else puts "#{number} is greater than 100" end end puts evaluate(-43) # -43 is negative puts evaluate(0) # 0 is between 0 and 51 puts evaluate(27) # 27 is between 0 and 51 puts evaluate(100) # 100 is between 51 and 100 puts evaluate(9999) # 9999 is greater than 100 或者,因为case语句使用===进行比较,所以你可以写 def evaluate(number) case when number < 0 puts "#{number} is negative" when (0..50) === number puts "#{number} is between 0 and 51" when (51..100) === number puts "#{number} is between 51 and 100" else puts "#{number} is greater than 100" end end 这实际上是上面提到的第一个案例陈述中发生的事情. 参见Range#===:“如果obj [参数]是范围的元素,则返回true,否则返回false.”换句话说,(1..10)=== number是真的,当且仅当(1..10).include?(数字). 我不是在提倡这种选择;我提出它是为了帮助显示案例陈述中发生的事情.以下是一个更短的选择,也许读起来更好. def evaluate(number) suffix = case number when -Float::INFINITY...0 then "negative" when 0..50 then "between 0 and 51" when 51..100 then "between 51 and 100" else "greater than 100" end puts "#{number} is #{suffix}" end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Swift学习之十四:闭包(Closures) .
- 如何在Swift中使用“CFRetain(sampleBuffer)”?
- c# – 如何使用OpenHardwareMonitor lib获得cpu风扇速度?
- ruby-on-rails-3 – capistrano 3不知道如何构建任务“部署
- 详解Vue微信授权登录前后端分离较为优雅的解决方案
- c# – 将LINQ查询绑定到FastReport并仅获取一行数据
- c# – 如何代理在docker容器中运行的dotnet核心应用程序的每
- reactjs – 未捕获错误:不变违规:元素类型无效:对象
- OSB格式(REST)转化(XML到JSON,JSON到XML)
- 如何将readLine()的Swift 3输出转换为Integer?