2016-02-13 77 views
2

我在Play 2.4.6中使用了以下模板定義塊(使用scala 2.11.6和sbt 0.13.8)abd我在下面的代碼中得到了「mising參數類型」:Play模板中缺少參數類型

@property(budgetId: Int, propertyName: String, value: String, shouldEdit: Boolean = false, displayMethod: Option[String => String] = None) = { 
    <div> 
    <label class="prop-name">@displayMethod.getOrElse(String => propertyName)(propertyName)</label> 
    @shouldEdit ? editable(budgetId, routes.Budgets.update(budgetId), "input", propertyName, value) : <span>@value</span> 
    </div> 
} 

@editable(id: Int, url: Call, inputType: String, name: String, value:String) = { 
    <div class="editable" 
     data-editable-input="@inputType" data-editable-url="@url" 
     data-editable-id="@id" data-editable-property="@name" >@value</div> 
} 

任何人有任何想法,爲什麼這可能是?

+0

您是否可以更新您的問題以包含錯誤的詳細信息? – Ryuu

回答

0

@displayMethod.getOrElse(String => propertyName)是問題所在。

String實際上是一個標識符在這裏,而不是類型String。所以你有一些功能參數名稱String,它的類型是未知的。編譯器將不會推斷該類型爲String => String,因爲Option#getOrElse有一個類型參數B >: A,這意味着它不必是String => String(下面只有它的下邊界)。

你必須自己提供類型。最明顯的辦法是說:

@displayMethod.getOrElse((_: String) => propertyName) 

現在,我們宣佈一個函數,明確String => String,其中_表示我們不關心的一個參數。

+0

不錯的地方,謝謝! – cipacda