Objective-C 中的数组乘法,用于 NSArray 和 NSMutableArray

Array multiplication in Objective-C, for NSArray and NSMutableArray

提问人:CocoaNut 提问时间:9/26/2023 更新时间:9/26/2023 访问量:31

问:

在 Python 中,表达式(带有 a,b,c 变量)是有意义的,并返回 .此外,在 Python 中,列表(或数组)在设计上是可变的。2*[a,b,c][a,b,c,a,b,c]

例如,在 实现复制 Python 行为的实例方法。 但是在Objective-C中没有给出可变性:s在设计上是不可变的,但是它们有一个可变的子类,它不能真正继承该方法。NSArray-(NSArray*) multiplyByNumber:(NSInteger)number;NSArrayNSMutableArraymultiplyByNumber

有没有办法避免重新实现的方法?还是我真的必须为可变子类这样做?NSMutableArray

数组 objective-c nsmutablearray

评论

2赞 Willeke 9/26/2023
您应该添加 和 、 喜欢 和 。 继承。-[NSArray arrayByMultiplyingByNumber:]-[NSMutableArray multiplyByNumber:]arrayByAddingObject:addObject:NSMutableArrayarrayByMultiplyingByNumber:
0赞 CocoaNut 9/26/2023
哦,我只是打电话给 super,然后做一个可变的复制。这是..“safe”,因为没有更好的词,因为名称表明返回值是不可变的。谢谢!arrayByMultiplyingByNumber
0赞 Willeke 9/26/2023
不,未实现,它返回一个 . 是,它使接收器发生突变。-[NSMutableArray arrayByMultiplyingByNumber :]NSArray-[NSMutableArray multiplyByNumber:]- (void) multiplyByNumber:(NSInteger)number
0赞 CocoaNut 9/26/2023
啊,是的。我改变了我的方法,所以我不再需要这个了,但我无法实现对 super 的调用:你如何“覆盖”自己?multiplyByNumberNSMutableArrayarrayByMultiplyingByNumber
1赞 CocoaNut 9/26/2023
显而易见的方法是一个完全独立的实现,而不是 super 提供的实现(将数组添加到自身 1 次),但我希望以不同的方式进行

答: 暂无答案