2015-01-13 90 views
-1

我試圖探索在ruby中結束或終止語句的各種方法。我知道分號和新行。還有其他可能的方法嗎?並且新的行總是終止該聲明?另外,遵循什麼樣的編程習慣?關閉括號以終止語句

+1

查看Githubs風格指南:https://github.com/styleguide/ruby – Anthony

+0

編寫代碼以提高可讀性。現在很少有很好的理由寫簡潔的代碼,因爲口譯人員比舊的BASIC口譯人員更聰明。分號和/或簡潔代碼在Ruby中很少需要,而可讀代碼總是需要的。 –

+0

您的標題與該問題不符。 – sawa

回答

0

是否有其他可行的方法?

是的。例如,在條件表達式所示:

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" 
    

有可能還有我失蹤的其他人。

0

分號在Ruby中不是一個好習慣。換行符就足夠了。只有縮短代碼而不會丟失人的可讀性時才使用分號分隔命令。例如,你可以使用分號:中

posx = 0.0; posy = 0.0; posz = 0.0 

代替:

posx = 0.0 
posy = 0.0 
posz = 0.0 
+1

或甚至'posx = posy = posz = 0.0'更具可讀性。 –

+0

你說得對。我的片段只是一個例子,可能還不夠好。但是表明你根本不需要使用分號;) – Grych

+1

在我的編碼和我們的團隊中,我很少使用或推薦使用分號。在Ruby中,它們不是那麼必要的,通常可以避免。如果這是Perl或C,它肯定會是一個不同的情況,因爲它們是分號瘋狂的。 –