[英]How to pass kwargs in ruby function? Based on python example
$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
python 上有一個例子:
def any_func(a, b=2, c = 0, d=None):
return c
print(any_func(25, c=30)) # will print 30
我怎樣才能在 ruby 上做同樣的事情?
在 ruby 上如何調用“kwargs”? 我想知道它以進行進一步搜索。
我在 ruby 上嘗試了以下代碼:
#!/usr/bin/env ruby
def any_func(a, b = 2, c = 0, d = nil)
c
end
puts any_func(25, c = 30) # will print 0, 30 is expected
在 Ruby 中,您需要使用類似哈希的語法
def any_func(a, b: 2, c: 0, d: nil)
c
end
any_func(25, c: 30)
def fun(a=1)
只設置一個默認值。 如果你有any_func(25, c = 30)
,這意味着“用兩個 arguments, 25 調用any_func
和表達式c = 30
的結果 =3”
Ruby 具有位置 arguments 和關鍵字 arguments。 與 Python 不同,您不能混合使用它們,但必須使用各自的語法聲明它們並在方法調用中相應地提供它們。
def any_func(a, b: 2, c: 0, d: nil)
c
end
puts any_func(25, c: 30)
您可以參考官方語法文檔了解更多關於如何使用 arguments 聲明和調用方法。
至於您自己使用any_func(25, c = 30)
調用您的any_func
方法的示例,這里發生的是您在調用上下文中創建了局部變量c
,其值為30
。 您還將此值傳遞給方法的第二個(可選)參數b
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.