小编apo*_*try的帖子

在子类化时混合objective-c和swift

我有一个用Swift编写的UIViewController子类,叫做'BaseViewController'.我现在有一个名为'ViewController1'的'旧'视图控制器,用Objective-C编写,我想从'BaseViewController'继承.按照其他建议我导入了'Project-Swift.h'头文件.

像这样子类化时我的问题出现了

#import <UIKit/UIKit.h>
#import "MyProject-Swift.h"

@interface ViewController1 : BaseViewController
@end
Run Code Online (Sandbox Code Playgroud)

错误是:

不能使用objc_subclassing-restricted属性对类进行子类化

它出现在@interface ...行上.

objective-c ios swift

55
推荐指数
2
解决办法
2万
查看次数

Rails:删除级联vs依赖destroy

假设我有两个表:usersorders.用户有很多订单,所以我的订单表中自然会有一个外键user_id.

rails中的最佳实践(速度,样式和参照完整性)是什么,以确保删除用户时,所有相关订单也会被删除?我正在考虑以下选项:

案例1. :dependent => :destroy在用户模型中使用

案例2.在postgres中定义表顺序并写入

user_id integer REFERENCES users(id) ON DELETE CASCADE
Run Code Online (Sandbox Code Playgroud)

我有什么理由使用案例1吗?似乎案例2正在做我想做的一切吗?执行速度方面有区别吗?

postgresql referential-integrity ruby-on-rails

27
推荐指数
3
解决办法
2万
查看次数

红宝石的累积加权平均值

我正在尝试实现将列表作为参数的累积加权平均函数

[[1000, 3.1], [500, 1.2], [800, 7.1], [1300, 8.88]]
Run Code Online (Sandbox Code Playgroud)

并返回(此处四舍五入到小数点后两位)

[3.1, 2.47, 4.08, 5.81]
Run Code Online (Sandbox Code Playgroud)

例如:2.47 =(1000 * 3.1 + 500 * 1.2)/ 1500。

我目前使用以下代码解决了此问题:

def cumulative_weighted_average(list)
  cs = 0
  qu = 0
  res = list.inject([0]) do |s, el|
    cs += el[0] * el[1]
    qu += el[0]
    s + [cs.to_f / qu]
  end
  res.shift
  res
end
Run Code Online (Sandbox Code Playgroud)

有没有更短(更紧凑)的方式来做到这一点?

编辑: 感谢您下面的答案!该列表平均将包含约1000个条目,因此不确定速度要求。由于我实际上需要能够跟踪块中的两个值,因此是否有一些inject扩展允许您编写

list.inject([0,0]){ |s1, s2, el| ...}
Run Code Online (Sandbox Code Playgroud)

哪里s1和s2初始化为0?

ruby

4
推荐指数
1
解决办法
1535
查看次数