埃菲尔铁塔:红色,绿色,蓝色,foo,条形:INTEGER是唯一的

时间:2018-10-08 17:41:53

标签: eiffel

我记得我能够做类似的事情

red, green, blue, foo, bar: INTEGER is unique

在埃菲尔铁塔,它已经过时了吗?是什么原因?什么会代替它?

1 个答案:

答案 0 :(得分:1)

唯一常量属性现在已过时。正在开发一种新的类型安全机制。同时,最接近的选择是使用常量属性:

red: INTEGER = 1
green: INTEGER = 2
blue: INTEGER = 3
foo: INTEGER = 4
bar: INTEGER = 5

当然,也可以自己设计类型安全的变体:

expanded class QUX inherit
    ANY
        redefine
            default_create
        end 
feature {NONE} -- Creation
    default_create do make (1) end
feature {QUX} -- Initialization
    make (value: like item) do item := value end
feature -- Enumeration
    red: QUX
        once
            Result.make (1)
        ensure
            instance_free: class
        end
    green: QUX
        once
            Result.make (2)
        ensure
            instance_free: class
        end
feature -- Access
    item: INTEGER
end

然后在您要编写的代码中:

x: QUX
...
x := {QUX}.red
if x = {QUX}.green then ...

注意。您可能需要安装EiffelStudio 18.07或更高版本才能使用类功能。