我試圖探索在ruby中結束或終止語句的各種方法。我知道分號和新行。還有其他可能的方法嗎?並且新的行總是終止該聲明?另外,遵循什麼樣的編程習慣?關閉括號以終止語句
回答
是否有其他可行的方法?
是的。例如,在條件表達式所示:
if foo then bar else baz end
的條件由then
關鍵字終止,然後分支由關鍵字else
終止,和其他分支由關鍵字end
終止。
並且新行總是終止語句嗎?
不。很多情況下,Ruby可以告訴表達式尚未完成,在這種情況下,換行符不會終止表達式。
一些例子是
雙目中綴商者無其右操作數:
23 + 42 foo = 42
一元前綴運算符缺少操作數:
- 42 ! false
這裏有一個有趣的小片使用的代碼:
foo++ bar # same as foo + +bar # same as foo.+([email protected])
未封閉的列表:
puts(23, 42) foo, bar = 23, 42 [23, 42] {foo: 23, bar: 42} def foo(bar, baz) end
未封閉的文字:
[ 23, 42 ] { foo: 23, bar: 42 } 'foo bar' "foo bar" %w! hello world !
缺失值在
Hash
文字:{ :foo => :bar, baz: :quux }
消息發送小姐荷蘭國際集團要發送的消息:
23. to_s
即使是這樣的支持:
23 .to_s
逃離換行也不會讓它終止表達:
"foo" \ "bar"
有可能還有我失蹤的其他人。
分號在Ruby中不是一個好習慣。換行符就足夠了。只有縮短代碼而不會丟失人的可讀性時才使用分號分隔命令。例如,你可以使用分號:中
posx = 0.0; posy = 0.0; posz = 0.0
代替:
posx = 0.0
posy = 0.0
posz = 0.0
或甚至'posx = posy = posz = 0.0'更具可讀性。 –
你說得對。我的片段只是一個例子,可能還不夠好。但是表明你根本不需要使用分號;) – Grych
在我的編碼和我們的團隊中,我很少使用或推薦使用分號。在Ruby中,它們不是那麼必要的,通常可以避免。如果這是Perl或C,它肯定會是一個不同的情況,因爲它們是分號瘋狂的。 –
- 1. C++:switch語句在關閉大括號之前缺少分號
- 2. 關閉句柄的Perl終止命令
- 3. 方法終止時是否需要關閉連接和語句?
- 4. Codeigniter括括號的語句
- 5. 是否可以自動關閉Xcode 4中的括號/括號?
- 6. 關閉DB語句
- 7. 關閉PDO語句
- 8. []括號在sql語句中
- 9. 逃脫關閉大括號
- 10. 如何停止/終止ultralite SELECT語句?
- 11. 在xmlnamespaces的情況下,以前的語句必須以分號終止
- 12. VS代碼,在關閉引號/大括號/括號後跳轉
- 13. RoR上的關閉語句
- 14. 如何在開關語句後停止程序關閉
- 15. phantomjs以信號SIGSEGV終止
- 16. 如何防止在ReSharper中自動關閉花括號?
- 17. 如何使vscode在插入時停止重寫關閉括號
- 18. 如何阻止Eclipse移動關閉java括號的遊標?
- 19. SQL Server錯誤:(;)MERGE語句必須用分號來終止
- 20. 什麼樣的語句不需要C++中的分號終止?
- 21. 關閉傀儡類大括號的語法錯誤
- 22. 如何讓Light Table自動關閉大括號和方括號?
- 23. 重寫if語句:其中一條語句以一對太括號結尾
- 24. 有關SQL語句中缺少左括號
- 25. sqlite3方括號中的select語句
- 26. 嵌套的if語句沒有括號
- 27. 刪除haskell語句中的括號
- 28. 插入列名括號中的語句
- 29. 意外的關閉花括號}錯誤
- 30. R中的意外關閉括號?
查看Githubs風格指南:https://github.com/styleguide/ruby – Anthony
編寫代碼以提高可讀性。現在很少有很好的理由寫簡潔的代碼,因爲口譯人員比舊的BASIC口譯人員更聰明。分號和/或簡潔代碼在Ruby中很少需要,而可讀代碼總是需要的。 –
您的標題與該問題不符。 – sawa