2013-02-09 24 views
0

我並不十分熟悉合併操作符 - 我只是想了解一些Python使用的確切內容。靜態類型語言中的合併操作符

就我而言,一個合併運算符是攪拌機合併運營商,結合不同的表達效果到獨特的價值。

在Python表達式的值爲"some value"

value = True and "some value" 

而這一次False

value = False and "some value" 

我會用一些表達進行評估,而不是直接使用的bool,但在靜態類型的語言,如C++,這是行不通的 - 除非使用模板,我猜。

我的問題是:是否有任何靜態類型的語言支持coalescing operators,或者是評估表達式問題這種語言不支持此功能的原因是什麼?

只是爲了添加一些上下文,我最近一直試圖在C++中操縱那些接近這些表達式的東西,但總是會出現一個expected primary-expression before錯誤 - 從我推斷出問題出現在語言輸入方法中。

+0

什麼是「評估表達式問題」? – phant0m 2013-02-09 15:24:22

+0

@ phant0m我認爲有一些「被評估的表達式」,而不是簡單地使用「True」或「False」,這是C++無法執行此功能的原因,但它似乎是由於事實上C++是靜態類型的 - 並且靜態類型也適用於任何其他語言。 – Rubens 2013-02-09 15:28:33

+0

你可以在Haskell中找到與靜態類型相似的東西(我相信它)。 – phant0m 2013-02-09 15:31:07

回答

0

總之,沒有。

C++不是Python(或PHP或其他某種「高級語言」)。在Python中,變量可以從包含布爾值變爲包含字符串變爲包含浮點數。在C和C++中,變量被聲明爲包含特定的類型。有多種方法可以將相同結構中的不同類型存儲,例如「Boost :: variant」類似於Python內部的東西 - 它在數據結構中有一個「什麼類型的變量」。

+0

我明白C++不是Python,我認爲「這個變量是什麼類型」Boost提供的是某種反射方法,對吧?但是,由於語言輸入方法 - 靜態/動態類型,「合併運算符」在C++中不起作用的原因是什麼? – Rubens 2013-02-09 15:18:25

+0

是的,如果您有一個靜態類型,那麼您無法將不同類型的[不兼容類型]的值分配給同一個變量。 – 2013-02-09 15:23:24

相關問題