簡體   English   中英

如何在 ruby function 中傳遞 kwargs? 基於 python 示例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM