Eiffel 引介 Part V (1)

5 杂项议题

5.1 Eiffel 中的简单型别

l         Eiffel 中的简单型别包括 CHARACTERBOOLEANINTEGERREAL 以及 DOUBLE

l         简单型别之对象的赋值以及等同性(equality)检查与照常想象到的一样,即 a := b 的结果是将 b 的值拷贝给 a,而 a = b 则在 a b 所代表的值相等的时候为真值。

l         检查不等性时,使用 a /= b

l         简单型别的对象不需要予以显式的创建。

l         简而言之,简单型别采用值语义(value semantics)。

 

5.2 Class Types

l         简单型别以外的其它型别之对象是通过 references(引用;也称 pointers,指针)来实现的。这样的对象需要被显式的创建。

l         如果 b = Void 为真,那么 b 不指代任何引用对象。如果 b /= Void 为真,那么 b 指代一个已经创建的对象。

l         于是,a := b 使得 a,b 两者指代同一个对象(即成为同一个对象的引用)。这种情况下, a = b 的结果为真。

l         同样,我们使用 a /= b 来检查不等性。

l         还有一些方法(copyis_equal)可以实现将一个被引用对象的域(field)拷贝到另一个对象对应的中,并可以检查两各对象是否包含相同的值。

l         简而言之,class types 采用引用语义(reference semantics)。

 

5.3 GENERAL 类别

l         每一个类别都默认的继承自类别 ANY,而类别 ANY 则是继承自类别 GENERAL

l         Void 这个 feature 正是身居 GENERAL 中,因此每一个类别都可以使用它。

l         类别 GENERAL 的另一个重要的 feature ioio 被声明为 STD_FILES 型别,提供对输入/输出程序(routines)的便捷访问。

l         例如, io.readint 从标准输入读取一个整数。读取的结果被放在 io.lastint中。(可注意到,能改变状态的feature与只询访状态(即不能改变状态)的feature是分离开来的。)

 

5.4 变量与对象

l         要让变量 b 指代一个对象,有两种方法:

1.       显式创建 b 对象:!!b.make

2.    用已经创建的对象对 b 赋值:!!a.make; b := a

l         类似的,要使 b 脱离(detach)对一个对象的引用,也有两种方法:

1.    显式脱离(Explicit detachment):b := Void

2.    Void 引用赋值给 ba := Void; b := a

 

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这里提供一个简单的景点管理代码示例,供参考: ```python class Attraction: def __init__(self, name, description, location): self.name = name self.description = description self.location = location class AttractionManager: def __init__(self): self.attractions = [] def add_attraction(self, attraction): self.attractions.append(attraction) print(f"Attraction '{attraction.name}' added successfully.") def remove_attraction(self, attraction_name): for attraction in self.attractions: if attraction.name == attraction_name: self.attractions.remove(attraction) print(f"Attraction '{attraction_name}' removed successfully.") return print(f"Attraction '{attraction_name}' not found.") def display_attractions(self): print("List of attractions:") for attraction in self.attractions: print(f"{attraction.name} - {attraction.description} - {attraction.location}") # Example usage manager = AttractionManager() # Add attractions manager.add_attraction(Attraction("Eiffel Tower", "Iconic tower in Paris", "Paris, France")) manager.add_attraction(Attraction("Statue of Liberty", "Iconic statue in New York", "New York, USA")) # Display attractions manager.display_attractions() # Remove an attraction manager.remove_attraction("Eiffel Tower") # Display attractions again manager.display_attractions() ``` 这个示例包括两个类,`Attraction` 表示一个景点,包含名称、描述和位置信息;`AttractionManager` 管理所有景点,包括添加、删除和显示列表功能。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kingofark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值