Class 埃菲尔的属性
Class attributes in Eiffel
我正在尝试在 Eiffel 中制作一个 class,其中包含一些属性和函数。我不断遇到属性对 setName 不可见或未正确初始化的问题。编译器错误是:VEVI:未正确设置变量。属性:名称。我希望能够在 APPLICATION 中实例化一个 TESTER 对象并调用这些方法。
class
TESTER
create
make
feature
name: STRING
score: INTEGER
make
do
io.putstring ("I am making TESTER%N")
end
sleep
do
io.put_string ("TESTER is sleeping%N")
end
setName (name_: STRING)
do
name := name_
end
end
这与 void-safety ( https://www.eiffel.org/doc/eiffel/Void-safe%20programming%20in%20Eiffel ) 有关。
有几种方法可以解决示例中的问题,下面显示了其中两种:
将 name
声明为 detachable
。默认情况下 class 类型是 attached
。将类型更改为 detachable
允许将属性 name
初始化为默认值 Void
,即不附加到任何对象。
name: detachable STRING
在创建过程中将对象附加到属性 name
make
。
make
do
io.putstring ("I am making TESTER%N")
name := "something"
end
规则的简化版本说所有属性都应在创建过程结束时设置。
我正在尝试在 Eiffel 中制作一个 class,其中包含一些属性和函数。我不断遇到属性对 setName 不可见或未正确初始化的问题。编译器错误是:VEVI:未正确设置变量。属性:名称。我希望能够在 APPLICATION 中实例化一个 TESTER 对象并调用这些方法。
class
TESTER
create
make
feature
name: STRING
score: INTEGER
make
do
io.putstring ("I am making TESTER%N")
end
sleep
do
io.put_string ("TESTER is sleeping%N")
end
setName (name_: STRING)
do
name := name_
end
end
这与 void-safety ( https://www.eiffel.org/doc/eiffel/Void-safe%20programming%20in%20Eiffel ) 有关。
有几种方法可以解决示例中的问题,下面显示了其中两种:
将
name
声明为detachable
。默认情况下 class 类型是attached
。将类型更改为detachable
允许将属性name
初始化为默认值Void
,即不附加到任何对象。name: detachable STRING
在创建过程中将对象附加到属性
name
make
。make do io.putstring ("I am making TESTER%N") name := "something" end
规则的简化版本说所有属性都应在创建过程结束时设置。