【问题标题】:Missing argument label when calling a method in "strategy design pattern" -SWIFT在“策略设计模式”中调用方法时缺少参数标签-SWIFT
【发布时间】:2015-07-24 10:17:54
【问题描述】:

我最近冒险使用 Swift,但我不明白为什么当我在方法中返回 Int 时我的代码不起作用。

protocol StrategyProtocol
{
    func calculate(num1:Int, num2:Int) ->Int
}

class Context
{
    var _strategyProtocol: StrategyProtocol!

    init(_strategyProtocol: StrategyProtocol)
    {
        self._strategyProtocol=_strategyProtocol
    }

    func Calculate(num1: Int, num2: Int) ->Int
    {
        return _strategyProtocol.calculate(num1, num2)
    }
}

class Add: StrategyProtocol
{
    func calculate(num1: Int, num2: Int) -> Int
    {
        return num1 + num2
    }
}

class Minus: StrategyProtocol
{
    func calculate(num1: Int, num2: Int) -> Int
    {
        return num1 - num2
    }
}

显然这行代码不起作用并提示missing argument label 'num2:' in call

//return _strategyProtocol.calculate(num1, num2)

谁能告诉我如何解决它并向我解释。

【问题讨论】:

    标签: swift design-patterns methods argument-passing strategy-pattern


    【解决方案1】:

    在 Calculate func 中,您缺少第二个参数:

    func Calculate(num1: Int, num2: Int) ->Int
      {
        return _strategyProtocol.calculate(num1, num2: num2)
      }
    

    【讨论】: