ruby - 可以在 Ruby 中评估为 false(模糊逻辑)的 float 子类

标签 ruby boolean fuzzy-logic

我需要一个可以表示概率的类。它可以表示为 0 和 1 之间的 float ,任何低于 0.5 的值都应评估为 false。 (或者它可以在 1 和 -1 之间,任何负数都是错误的)

p = A.probability() 
puts p # will output 0.3
if(p)
  puts 'success'
else
  puts 'failure'
end
# will outputs 'failure'

从这里post这似乎表明这是可能的:每个对象都有一个 boolean 值...Ruby 中的大多数对象都有一个 boolean 值 true。只有两个对象的 boolean 值为 false。 只是我需要以某种方式设置此 boolean 值。那么这可能吗?

最佳答案

我想做类似的事情,但遗憾的是这在 Ruby 中是不可能的。

仅有的两个 boolean 值为 false 的对象是 false 本身和 nil。几周前,我与 Brixen 进行了一次互联网聊天 (IRC) 讨论。 ,rubinius 的主要开发者之一,他解释得很好。我的理解是,当 Ruby 决定一个对象是否为真时,它不会调用对象上的任何方法(即发送任何消息),它只是查看指向对象的指针以查看指针本身是否正确等于 false 或 nil。由于它不调用对象的任何方法,因此您无法更改行为。

你能做的最好的事情是这样的:

p = A.probability() 
puts p # => 0.3
if p.to_bool
  puts 'success'
else
  puts 'failure'
end

关于ruby - 可以在 Ruby 中评估为 false(模糊逻辑)的 float 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8005562/

相关文章:

Ruby 和模块化 - 是否有任何干净简单的方法可以从类中排除包含的||扩展模块/混合?

JavaScript:true >> 0 = 1 如何实现?

java - java中的模糊逻辑

python - Python 的性能是否物有所值?

ruby - Gets.chomp 输入比较返回错误

ruby - 从链接文本中提取带有 Nokogiri 的链接?

带命令的 ruby​​ 脚本生成 DOS shell 而不是 msysgit shell

boolean - XOR 可以使用 SKI 组合器表示吗?

c++ - 为什么我不应该在工作时做?

java - 如何在 Eclipse 中运行 JFuzzyLogic