Xcode 游乐场只能 运行 部分
Xcode Playground can only run partially
如上所示,在 Xcode 游乐场中,我正在尝试扩展协议 Exercise 以获得另外两个计算属性,caloriesBurnedPerMinute 和 描述 。当我想在playground中运行这部分代码时,最左下角的"play button"显示为灰色,表示它不能运行到第20行的代码。但是,如果我只想运行到第14行的代码,如下图,"play button"显示为蓝色,表示可以运行到第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)"
}
}
您的代码没有任何问题,那只是 Xcode 10 的新功能。参见 here。
这是一种运行逐行限制代码的方法,但有一些限制。如果将鼠标悬停在行号“20”上,您将看到一条灰线:
这意味着 Xcode 不能只 运行 那部分代码,大概是因为 Xcode 如何处理扩展声明。
只需添加一些实际上 运行 的代码,而不只是声明,然后按底部面板上方的播放按钮。您的代码 运行 就好了。
您需要将 Double
变量包装在 String
强制转换中,例如 String(caloriesBurned)
:
extension Exercise {
var description: String {
return "Exercise(\(name), burned \(String(caloriesBurned)) calories in \(String(minutes)) minutes)"
}
}
我不知道为什么,但它有帮助
如上所示,在 Xcode 游乐场中,我正在尝试扩展协议 Exercise 以获得另外两个计算属性,caloriesBurnedPerMinute 和 描述 。当我想在playground中运行这部分代码时,最左下角的"play button"显示为灰色,表示它不能运行到第20行的代码。但是,如果我只想运行到第14行的代码,如下图,"play button"显示为蓝色,表示可以运行到第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)"
}
}
您的代码没有任何问题,那只是 Xcode 10 的新功能。参见 here。
这是一种运行逐行限制代码的方法,但有一些限制。如果将鼠标悬停在行号“20”上,您将看到一条灰线:
这意味着 Xcode 不能只 运行 那部分代码,大概是因为 Xcode 如何处理扩展声明。
只需添加一些实际上 运行 的代码,而不只是声明,然后按底部面板上方的播放按钮。您的代码 运行 就好了。
您需要将 Double
变量包装在 String
强制转换中,例如 String(caloriesBurned)
:
extension Exercise {
var description: String {
return "Exercise(\(name), burned \(String(caloriesBurned)) calories in \(String(minutes)) minutes)"
}
}
我不知道为什么,但它有帮助