2014-07-18 51 views
1

在Scala程序中定義諸如Pi或黃金比例等常數是否正確?如何在Scala中定義一個常量成員?

舉個例子,在C#中我可以這樣做:

class Example 
{ 
    public readonly static Double GoldenRatio; 

    static Example() 
    { 
     GoldenRatio = (1.0 + Math.Sqrt (5.0))/2.0; 
    } 
} 
+0

有公共變量被認爲是不好的做法。考慮使用屬性。 'public static double GoldenRatio {get;私人設置;}'應該訣竅 –

回答

7

這將只是一個val成員:

object Example { 
    val GoldenRatio = (1.0 + Math.sqrt(5.0))/2.0 
} 

另外,還要看看。

+0

何時,確切地說,表達式會被評估? – sungiant

+1

@Pooky立即評估表達式。如果您希望在首次調用時使用'lazy val'來評估它,如果您希望每次調用時都使用'lazy val',則使用'def' –

+0

@Pooky如果您正在尋找編譯時評估,則可以將其設置爲「最終val「。請參閱http://stackoverflow.com/a/11197537/303940。然而,在GoldenRatio的情況下,需要執行一些數學運算,您可能需要在編譯期間使用宏來評估並將其轉化爲文字。 – KChaloux

相關問題