【发布时间】:2016-08-31 20:55:07
【问题描述】:
此代码导致perimeter() 函数内部出现“未解析的标识符”错误:
enum ShapeDimensions {
case Square(Double) // Associated value defined by length of one side
case Rectangle(width: Double, height: Double) // Associate value defined by width and height
case Point // No Associated value
case RightTriangle(baseLength: Double, sideHeight: Double) // Associated value defined by base length and height
func area() -> Double {
switch self {
case let .Square(side):
return side * side
case let .Rectangle(width: w, height: h):
return w * h
case .Point:
return 0.0
case .RightTriangle(baseLength: l, sideHeight: h):
return 0.5 * l * h
}
}
func perimeter() -> Double {
switch self {
case let .Square(side):
return 4 * side
case let .Rectangle(width: w, height: h):
return 2 * w + 2 * h
case .Point:
return 0.0
case .RightTriangle(baseLength: l, sideHeight: h):
return sqrt(l * l + h * h) + l + h
}
}
}
var squareShape = ShapeDimensions.Square(10.0)
var rectShape = ShapeDimensions.Rectangle(width: 5.0, height: 10.0)
var pointShape = ShapeDimensions.Point
var rightTriangleShape = ShapeDimensions.RightTriangle(baseLength: 5.0, sideHeight: 10.0)
print("Square's area = \(squareShape.area())")
print("Retangle's area = \(rectShape.area())")
print("Point's area = \(pointShape.area())")
print("Right Triangle's area = \(rightTriangleShape.area())")
print("Square's perimeter = \(squareShape.perimeter())")
print("Retangle's perimeter = \(rectShape.perimeter())")
print("Point's perimeter = \(pointShape.perimeter())")
print("Right Triangle's perimeter = \(rightTriangleShape.perimeter())")
我收到以下错误:
14-Enumerations.playground:221:29:错误:使用未解析的标识符“h” 返回 sqrt(l * l + h * h) + l + h ^ 14-Enumerations.playground:221:33:错误:使用未解析的标识符“h” 返回 sqrt(l * l + h * h) + l + h ^ 14-Enumerations.playground:221:38:错误:使用未解析的标识符“l” 返回 sqrt(l * l + h * h) + l + h ^ 14-Enumerations.playground:221:42:错误:使用未解析的标识符“h” 返回 sqrt(l * l + h * h) + l + h代码有什么问题?
【问题讨论】:
-
因为你忘记了那些行中的
let...比较case .RightTriangle(baseLength: l, sideHeight: h):和case let .Rectangle(width: w, height: h):。 -
您缺少来自
case .RightTriangle(baseLength: l, sideHeight: h)的let -
所以你的问题标题应该是“在没有 let 语句的情况下未解决的标识符错误”:)
-
已修复,@MartinR :p 我在诊断之前进行了编辑。
标签: swift compiler-errors