我不明白为什么以下三个例子中只有一个有效?是什么让其他两个错误?
class H(implicit a:String, b: Int) {
//Working
}
class H(a:String, implicit b: Int) {
//Not-Working
}
class H(implicit a:String, implicit b: Int) {
//Not-Working
}
答案 0 :(得分:2)
在第一种情况下,implicit
并未引用a
,而是引用整个参数列表。这意味着在调用构造函数时可以隐式提供&{34; a
和b
。 (并且还将它们作为课堂主体中的隐含物提供)。在这个意义上,您无法创建类或方法implicit
的单个参数。
implicit
的第二个用途是标记一个类型/对象成员。构造函数参数不是成员,但可以使用val
/ var
成为成员,如pamu的答案;或者,为了避免让它可见,private[this] val
。
答案 1 :(得分:0)
<ul>
<li>
<figure>
<a href="#">
<img src="http://placehold.it/400" />
</a>
<figcaption>
<div class="itemname"><span class="price">$10</span>Product</div>
<form>
<select>
<option selected>Please select</option>
</select>
<button type="submit">Add to Basket</button>
</form>
</figcaption>
</figure>
</li>
<li>
<figure>
<a href="#">
<img src="http://placehold.it/400" />
</a>
<figcaption>
<div class="itemname"><span class="price">$10</span>Product Two With A Much Longer Name That Could Wrap</div>
<form>
<select>
<option selected>Please select</option>
</select>
<button type="submit">Add to Basket</button>
</form>
</figcaption>
</figure>
</li>
<li>
<figure>
<a href="#">
<img src="http://placehold.it/400" />
</a>
<figcaption>
<div class="itemname"><span class="price">$10</span>Product Three No Select</div>
<form>
<button type="submit">Add to Basket</button>
</form>
</figcaption>
</figure>
</li>
<li>
<figure>
<a href="#">
<img src="http://placehold.it/400" />
</a>
<figcaption>
<div class="itemname"><span class="price">$10</span>Product</div>
<form>
<select>
<option selected>Please select</option>
</select>
<button type="submit">Add to Basket</button>
</form>
</figcaption>
</figure>
</li>
</ul>
在两种情况下需要val或var
class H1(implicit a:String, b: Int) {
//Working
}