让我们假设这种情况:我有一个对象数组,我想在每个对象上调用实例方法.我可以这样做:
//items is an array of objects with instanceMethod() available
items.forEach { $0.instanceMethod() }
Run Code Online (Sandbox Code Playgroud)
同样的情况也是如此map.例如,我想将每个对象映射到其他mappingInstanceMethod返回值的其他对象:
let mappedItems = items.map { $0.mappingInstanceMethod() }
Run Code Online (Sandbox Code Playgroud)
有更清洁的方法吗?
例如,在Java中可以做到:
items.forEach(Item::instanceMethod);
Run Code Online (Sandbox Code Playgroud)
代替
items.forEach((item) -> { item.instanceMethod(); });
Run Code Online (Sandbox Code Playgroud)
Swift中有类似的语法吗?
是否可以在Attributes Inspector中设置浮点值?我的UIView中有这个属性:
@IBInspectable
var scale: CGFloat = 0.90 {
didSet {
setNeedsDisplay()
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,默认值为0.9,我想在Attributes Inspector中更改它,但它看起来像这样:

我只能在那里设置整数值.我错过了什么吗?
我从课程网站下载了Smasthag演示应用程序.项目构建正常(在Twitter,TwitterRequest等类的小变化之后,因为我使用最新的Xcode 7b4)并且在模拟器上工作正常(我还必须添加NSAppTransportSecurity密钥info.plist),但不在设备上 - 它不会获取推文.我在带有iOS 9 Public Beta的iPhone 6和带有iOS 8.4的iPad 2上进行了测试.此外,当app在模拟器中运行并且我更改了hashtag以进行搜索时,整个tableView会重新加载新的推文,但在控制台中我得到了这个:
2015-07-23 03:24:15.560 Smashtag[25991:4344251] _BSMachError: (os/kern) invalid capability (20)
2015-07-23 03:24:15.560 Smashtag[25991:4344251] _BSMachError: (os/kern) invalid name (15)
Run Code Online (Sandbox Code Playgroud)
应用仍然运行正常,但这个错误让我感到困扰.我对谷歌中的这个_BSMachError一无所知(只有一条孤独的印尼语推文).我不知道为什么app不能在设备上获取推文.
我正在尝试对我的application.yml文件进行参数化,以便我可以将它放在我的项目的github repo上,但不会显示数据库连接细节.我想使用系统环境变量来做到这一点.我使用OS X El Capitan.
我在下面写了以下几行.bash_profile:
export JDBC_TODO_USER=<my-username>
export JDBC_TODO_PASS=<my-password>
Run Code Online (Sandbox Code Playgroud)
我的后续行application.yml:
spring:
datasource:
username: ${JDBC_TODO_USER}
password: ${JDBC_TODO_PASS}
Run Code Online (Sandbox Code Playgroud)
我也试过了
spring:
datasource:
username: ${JDBC.TODO.USER}
password: ${JDBC.TODO.PASS}
Run Code Online (Sandbox Code Playgroud)
这两个都在应用程序启动时给我一个错误:
java.sql.SQLInvalidAuthorizationSpecException: Could not connect: Access denied for user '${JDBC_TODO_USER'@'<my-ip-address>' (using password: YES)
当然,当我${JDBC_TODO_USER}用我的用户名和${JDBC_TODO_PASS}密码替换时,一切正常.看起来Spring不明白我是指环境变量.我是否需要进行一些额外配置才能使其正常工作?
我在向 plot.ts 添加点时遇到问题。如果我按照下面的示例创建 ts 对象,一切都很好,并且点会添加到图中。
data <- ts(rnorm(100))
plot(data)
ind <- c(1,10,67)
points(ind, data[ind], pch = 19, col = 'red')
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时(我希望在 X 轴上有日期,所以我使用开始、结束和频率参数。),点不会出现在图中:
data <- ts(rnorm(100), start = c(1996,1), end = c(2004,4), frequency = 12)
plot(data)
ind <- c(1,10,67)
points(ind, data[ind], pch = 19, col = 'red')
Run Code Online (Sandbox Code Playgroud)
是否有任何选项可以将这些点添加到第一个示例中或添加日期?
附注。我几乎可以肯定,我曾经设法通过参考特定日期的时间序列的值来为绘图添加一点,但现在我无法将其带回来。
我有一些接口(协议)的两个或多个实现:
protocol Interface {
func methodOne()
func methodTwo()
}
Run Code Online (Sandbox Code Playgroud)
我想测试每个实现,我不想重复代码。我有几个选择,但没有一个让我满意。
第一个是创建测试用例ImplementationA并将其子类化以获得测试用例ImplementationB:
class ImplementationATests: XCTestCase {
var implToTest: Interface!
override func setUp() {
super.setUp()
implToTest = ImplementationA()
}
func testMethodOne() {
...
}
func testMethodTwo() {
...
}
}
class ImplementationBTests: ImplementationATests {
override func setUp() {
super.setUp()
implToTest = ImplementationB()
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点之一是我不能进行仅适用于ImplementationA. (例如测试一些特定于该实现的辅助方法)
我想出的第二个选项是为测试用例创建共享子类:
class InterfaceTests: XCTestCase {
var implToTest: Interface!
func testMethodOne() {
...
}
func testMethodTwo() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但在这里,这些测试也将被执行,并且它们将失败,因为没有分配给 …
swift ×4
ios ×2
cs193p ×1
plot ×1
r ×1
spring ×1
spring-boot ×1
time-series ×1
unit-testing ×1
xcode ×1
xctest ×1