2013-02-09 52 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

相关问题