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)"
   }
}

我不知道为什么,但它有帮助