具有不寻常语法的Ruby方法

Gru*_*hor 2 ruby

我有一些方法:

def example_method
  I ? world!
end
Run Code Online (Sandbox Code Playgroud)

我对这个方法有两个问题:

  1. 由于不存在引号(example_method不是我的方法),这种方法怎么可能不会返回错误.
  2. 我的问题是,如何使这个方法返回'I ? too!'字符串而不重新定义,重写此方法.

第2点是我必须解决的练习.

谢谢!

tad*_*man 5

Ruby的语法非常宽容.当呈现表单的元素时,a b c它被解释为链式方法调用:a(b(c))

因此,这意味着您需要定义一个a接受单个参数的方法,另一个b接受参数的方法c,以及返回一些值的方法.

c部分应该是这样的:

def world!
  "too!"
end
Run Code Online (Sandbox Code Playgroud)

然后你可以用另一种方法链接:

def ?(x)
  "? #{x}"
end
Run Code Online (Sandbox Code Playgroud)

此方法名称似乎不可能,但当前版本的Ruby确实允许方法名称中的unicode字符.

最后一部分是类似的,留给你练习.