Cluster和MPP超级计算机架构有什么区别?
Zend教程中的示例:
我在学习C++时正在实现一个国际象棋模块.在我已经(部分)实施的模块中:
Board类(网格,碎片,移动方法等)Colour(黑色/白色)和Rank(KING,QUEEN,...,PAWN)和
Piece分组颜色和等级的结构(BLACK KING,...,WHITE PAWN).我现在正在决定如何在电路板(网格)上表示正方形的内容.一个正方形必须包含一个Piece(黑王),或者什么都不包含.考虑的选项:
创建一个struct Square包含两个数据成员,{bool occupied ; Piece piece;}(可能扩展Piece该类).
我的反对意见:解决方案似乎有点过于沉重,如果广场没有被占用,那么该piece成员应该是空的.我觉得它可能导致某些类方法需要例外,这些方法本来是不必要的.
扩展枚举Rank或Colour包含空选项.
我的反对:感觉语言不优雅,黑客和不自然.
寻找其他类似的包 std::optional
我的反对意见:对于编码风格和简洁性,我想避免使用额外的机器.会std::optional甚至是合适的?
使用NULL或nullptr表示空方格的状态
我的反对意见:再次,看起来很丑陋.空方块的内容不是NULL,也不是数字0,不应该与数字26相当......但应该是一个新的,新的常量EMPTY_SQUARE.
这些选项似乎都不合适.是否有更优雅的方式扩展类(如Piece)与其他成员(如EMPTY_SQUARE)没有原始类的数据成员?(还有其他选择吗?)
考虑一个简单的类和一个(不可变的)值实例:
class MyClass (var m: Int) {}
val x : MyClass = new MyClass(3)
Run Code Online (Sandbox Code Playgroud)
由于m被声明为变量(var),因此m为mutable。但是,由于x被声明为值,因此它是不可变的。那么是x.m可变的还是不变的?