Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 有人能解释一下这个三元组和代码中缺少的方法吗? 类数值 @@货币={'日元'=>0.013,'欧元'=>1.292,'卢比'=>0.019,'美元'=>1.0} def方法_缺失(方法,*args) 单数货币=(方法==:in?args.first:method).to_.gsub(/s$/,“”) 如果@@currency.has\u key?(单数\u currency) self.send(方法==:in?:/::*,@@currencies[单数\单位货币]) 其他的 超级的 终止 终止 终止_Ruby_Ternary Operator_Method Missing - Fatal编程技术网

Ruby 有人能解释一下这个三元组和代码中缺少的方法吗? 类数值 @@货币={'日元'=>0.013,'欧元'=>1.292,'卢比'=>0.019,'美元'=>1.0} def方法_缺失(方法,*args) 单数货币=(方法==:in?args.first:method).to_.gsub(/s$/,“”) 如果@@currency.has\u key?(单数\u currency) self.send(方法==:in?:/::*,@@currencies[单数\单位货币]) 其他的 超级的 终止 终止 终止

Ruby 有人能解释一下这个三元组和代码中缺少的方法吗? 类数值 @@货币={'日元'=>0.013,'欧元'=>1.292,'卢比'=>0.019,'美元'=>1.0} def方法_缺失(方法,*args) 单数货币=(方法==:in?args.first:method).to_.gsub(/s$/,“”) 如果@@currency.has\u key?(单数\u currency) self.send(方法==:in?:/::*,@@currencies[单数\单位货币]) 其他的 超级的 终止 终止 终止,ruby,ternary-operator,method-missing,Ruby,Ternary Operator,Method Missing,我没有得到确切的代码,我知道,它是用于转换的,但我没有得到三元运算符部分。这些行: singular_currency = (method == :in ? args.first : method).to_s.gsub(/s$/, '') self.send(method == :in ? :/ : :*, @@currencies[singular_currency]) ……也可以写成: if method == :in singular_currency = args.first.to

我没有得到确切的代码,我知道,它是用于转换的,但我没有得到三元运算符部分。

这些行:

singular_currency = (method == :in ? args.first : method).to_s.gsub(/s$/, '')
self.send(method == :in ? :/ : :*, @@currencies[singular_currency])
……也可以写成:

if method == :in
  singular_currency = args.first.to_s.gsub(/s$/, '')
  self / @@currencies[singular_currency]
else
  singular_currency = method.to_s.gsub(/s$/, '')
  self * @@currencies[singular_currency]
end
这样写会更清楚,但会增加重复。在Ruby(以及整个Smalltalk家族)中,方法调用和消息发送是一样的。调用在其参数中指定的方法的方法

将此添加到
方法\u missing
可以支持以下语法:

4.dollars
# => 4 * 1.0
4.dollars.in(:yen)
# => 4 * 1.0 / 0.013

4.yen
# => 4 * 0.013
4.yen.in(:dollars)
# => 4 * 0.013 / 1.0
这些线路:

singular_currency = (method == :in ? args.first : method).to_s.gsub(/s$/, '')
self.send(method == :in ? :/ : :*, @@currencies[singular_currency])
……也可以写成:

if method == :in
  singular_currency = args.first.to_s.gsub(/s$/, '')
  self / @@currencies[singular_currency]
else
  singular_currency = method.to_s.gsub(/s$/, '')
  self * @@currencies[singular_currency]
end
这样写会更清楚,但会增加重复。在Ruby(以及整个Smalltalk家族)中,方法调用和消息发送是一样的。调用在其参数中指定的方法的方法

将此添加到
方法\u missing
可以支持以下语法:

4.dollars
# => 4 * 1.0
4.dollars.in(:yen)
# => 4 * 1.0 / 0.013

4.yen
# => 4 * 0.013
4.yen.in(:dollars)
# => 4 * 0.013 / 1.0

谢谢,我明白你的意思,但我都没说。如何使用方法==:in。当您调用4.dollars.in(:日元)和args.first时,它是如何工作的?method==:in?:/::*这里为什么用这个冒号?如果你能解释的话,我对这件事了解不多。非常感谢
send
使用a来指示应该调用哪个方法。三元运算符返回
:/
(除法)或
:*
(乘法)。因此,
send
调用可以归结为
self/..
self*..
。谢谢你解释的我都明白了,但我甚至没说什么。如何使用方法==:in。当您调用4.dollars.in(:日元)和args.first时,它是如何工作的?method==:in?:/::*这里为什么用这个冒号?如果你能解释的话,我对这件事了解不多。非常感谢
send
使用a来指示应该调用哪个方法。三元运算符返回
:/
(除法)或
:*
(乘法)。因此,
send
调用归结为
self/..
self*..