如上所示,在Xcode游乐场中,我试图扩展协议 Exercise ,使其具有两个更多的计算属性,即 caloriesBurnedPerMinute 和 description 。当我想在操场上运行这部分代码时,最左下角的“播放按钮”显示为灰色,表示在第20行之前它无法运行代码。但是,如果我只想运行代码直到第14行,如下所示,“播放按钮”显示为蓝色,表示它可以运行代码直到第14行。
我可以知道协议 Exercise 的第二个扩展是否有问题?
编辑:以下是代码。
import Cocoa
protocol Exercise: CustomStringConvertible {
var name: String { get }
var caloriesBurned: Double { get }
var minutes: Double { get }
}
extension Exercise {
var caloriesBurnedPerMinute: Double {
return caloriesBurned / minutes
}
}
extension Exercise {
var description: String {
return "Exercise(\(name), burned \(caloriesBurned) calories in \(minutes) minutes)"
}
}
答案 0 :(得分:1)
您的代码没有错,这只是Xcode 10的新功能。参见here。
这是一种逐行运行代码的方法,但是有一些限制。如果将鼠标悬停在行号“ 20”上,则会看到一条灰线:
这意味着Xcode不能只运行代码的那部分,大概是因为Xcode处理扩展声明的方式。
只需添加一些实际运行的代码即可,而不只是声明,然后按底部面板上方的播放按钮。您的代码可以正常运行。
答案 1 :(得分:0)
您需要将Double
变量包装在String
的{{1}}中,
String(caloriesBurned)
我不知道为什么,但是有帮助