是def greet; puts "hello"; end
在Ruby中的一行上定義方法的唯一方法?如何在Ruby中的一行上定義方法?
回答
你可以不用,如果你使用括號使用分號:
def hello() :hello end
def add a,b; a+b end
分號是Ruby
內嵌語句終止或者你可以使用define_method
方法。 (編輯:Ruby 1.9中棄用這一個)
define_method(:add) {|a,b| a+b }
在`end`之前不需要';`。 – Nakilon 2010-11-29 09:15:24
@Nakilon,現在修復。謝謝 – edgerunner 2010-12-05 19:57:03
Ruby 2+中似乎不推薦使用 – michau 2015-02-09 15:57:19
另一種方式:
define_method(:greet) { puts 'hello' }
可能是使用,如果你不想爲方法進入新的領域,同時定義它。
NoMethodError:在Ruby 1.9.3中調用Object:Class的私有方法`define_method' – Jared 2012-07-25 16:11:11
還有一種方法:
def greet() return 'Hello' end
只要給予充分的新鮮答案:
一般避免單在線方法。儘管它們在野外有些流行,但它們的定義語法有一些特殊性,使得它們的使用不受歡迎。無論如何 - 應該有 不超過一個表達式的單行方法。
# bad
def too_much; something; something_else; end
# okish - notice that the first ; is required
def no_braces_method; body end
# okish - notice that the second ; is optional
def no_braces_method; body; end
# okish - valid syntax, but no ; make it kind of hard to read
def some_method() body end
# good
def some_method
body
end
一個例外是空體的方法。
# good
def no_op; end
- 1. 如何在Ruby中爲類的特定屬性定義方法?
- 2. Ruby - 如何重新定義類方法?
- 3. Ruby未定義的方法
- 4. 如何在Ruby中定義未命名的方法?
- 5. ruby中的自定義排序方法
- 6. Ruby中未定義的方法'pop'?
- 7. ruby中的動態方法定義
- 8. 在Ruby中基於現有方法的定義方法
- 9. 未定義的方法錯誤,但方法在Ruby中定義...爲什麼?
- 10. 在Ruby/Rails中快速定義方法 - 如何設置參數?
- 11. 在Ruby中,如何檢查方法「foo =()」是否已定義?
- 12. 如何檢查私有方法是否在ruby中定義
- 13. Ruby Mixin未定義方法
- 14. 方法定義後運行的Ruby方法
- 15. Ruby的attr_accessor魔法定義方法
- 16. 在ruby方法中定義自定義回調
- 17. 如何創建一個在Ruby中執行以前給定的塊的方法?
- 18. 如何定義scala方法的上限
- 19. 無法在自定義Ruby類中使用[方括號]方法?
- 20. 如果我在Ruby中定義一個方法,它是否屬於任何類?
- 21. 定義?方法在Ruby和Rails
- 22. 在Schema.ObjectId上定義一個方法
- 23. Ruby:在運行時保存類/方法的定義
- 24. 困惑在Ruby中的分配方法(定義法等號)
- 25. Ruby on Rails的未定義的方法
- 26. 如何使用ruby線程在類中運行一個方法?
- 27. 如何調用一個方法定義的另一個定義
- 28. 如何編寫一個ruby模塊來允許類定義中的方法
- 29. 在構造方法上定義方法
- 30. 類或方法定義也是Ruby中的一個對象嗎?
從答案中可以看出,可以在一行中定義一種方法不同的方法,但問題是,應該如何?爲了維護和可讀性的原因,任何定義都應該以清晰明瞭的方式編寫,因此,如果單行變得笨拙或混亂,然後將其展開。有些語言似乎鼓勵使用簡潔編碼作爲代碼編寫的一種方式,但Ruby編碼風格鼓勵優雅,可讀性和可維護性高於調查。完成前三名,我們將向你鞠躬。 – 2011-01-27 22:37:56