这里是一些代码:
$ cat 1.rb
#!/usr/bin/env ruby
def f p1 = nil
unless p1 # TODO
puts 'no parameters passed'
end
end
f
f nil
$ ./1.rb
no parameters passed
no parameters passed
问题是,是否有办法区分没有参数和传递了一个
nil
参数?
更新
我决定添加一个在javascript
中的用例,希望能让事情更加清晰:someProp: function(value) {
if (arguments.length) {
this._someProp = value;
}
return this._someProp;
}
nil
,我就无法将变量的值设置为nil
。有人可能会说我应该选择不同的默认值,但我认为在这种情况下nil
是最合适的值。另外,也许你不能期望变量不取某些值。 - x-yuri