查看: 1776|回复: 5

[已经解决] 请教如何保证一个实例变量始值终不会降低(-=始终无效)

[复制链接]
梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
发表于 2023-5-3 06:54:04 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
大家好,

请问下如何保证一个实例变量值从创建后就不会被降低(也就是运算符-=对其不起作用)呢?

我是这么写的,结果不起作用还报错 :
  1. def bianliang-=(num=0)
  2. return
  3. end
复制代码
梦石
0
星屑
7296
在线时间
1244 小时
注册时间
2015-8-15
回帖
473
发表于 2023-5-3 08:12:29 | 显示全部楼层
为什么不加条件分歧呢?非要给系统出没有的公式呢
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2023-5-3 09:54:05 | 显示全部楼层
本帖最后由 soulsaga 于 2023-5-4 10:19 编辑

不能用-=              
[pre lang="ruby"]def bianliang;return [@bianliang,100].max;end[/pre]

这样不行呢..如果用乘或除都一样降不了
回复

使用道具 举报

梦石
0
星屑
8474
在线时间
776 小时
注册时间
2018-11-3
回帖
8
发表于 2023-5-4 00:47:34 | 显示全部楼层
  1. def bianliang=(num)
  2.   @bianliang=[@bianliang, num].max
  3. end
复制代码


bianliang-= 不是一个方法名。
a -= 1 只是 a = a - 1 的简写,
所以还是要回到 bianliang= 这个方法里面重写的。

点评

这才是正确答案!  发表于 2023-5-13 03:09

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
8003
在线时间
1184 小时
注册时间
2007-7-29
回帖
2014
发表于 2023-5-4 14:20:12 | 显示全部楼层
关键词 getter, setter
  1. class A
  2.     def initialize(kk)
  3.         @haha = kk;
  4.     end
  5.    
  6.     def haha
  7.         return @haha
  8.     end
  9.    
  10.     def haha=(value)
  11.         return
  12.     end
  13.    
  14. end

  15. $a = A.new(20)
  16. puts $a.haha
  17. $a.haha = 10
  18. puts $a.haha
  19. $a.haha /= 10
  20. puts $a.haha
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部