Eiffel: red, green, blue, foo, bar: INTEGER 是唯一的
Eiffel: red, green, blue, foo, bar: INTEGER is unique
我记得我可以做类似
的事情
red, green, blue, foo, bar: INTEGER is unique
在埃菲尔,它过时了吗?是什么原因?用什么代替它?
唯一常量属性现在已过时。一种新的类型安全机制正在开发中。同时,最接近的替代方法是使用常量属性:
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 或更高版本才能使用 class 功能。
我记得我可以做类似
的事情red, green, blue, foo, bar: INTEGER is unique
在埃菲尔,它过时了吗?是什么原因?用什么代替它?
唯一常量属性现在已过时。一种新的类型安全机制正在开发中。同时,最接近的替代方法是使用常量属性:
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 或更高版本才能使用 class 功能。