以下示例取自Scala编程,第2版。 我怀疑的是为什么有两个翻转,如下面的陈述中提到的那样#34;这个论点中的U型再次处于正位置(两个翻转)"?
meow方法结果参数位置为+。因此Cat [Cat [U,T],U]中的Cat [U,T]将具有 - 位置,因为在Cat类中,类型参数T被声明为-ve。
规则说在C [Arg]中,如果声明了C&C的类型参数,则会翻转Arg的分类 - 如C [-Q]
应用应该为的规则U将被翻转为+。所以只有翻转。如果从书中摘录的段落中提到的两个翻牌怎么来?
abstract class Cat[-T, +U] {
def meow[W−](volume: T−, listener: Cat[U+, T−]−)
: Cat[Cat[U+, T−]−, U+]+
}
类型参数W和两个值参数(音量和侦听器)的位置都是负数。查看喵喵的结果类型,第一个Cat [U,T]参数的位置是负数,因为Cat的第一个类型参数T用 - 来注释。此参数中的类型U再次处于正位置(两个翻转),而该参数内的类型T仍处于负位置。
答案 0 :(得分:1)
U
对Cat[U, T]
处于否定位置,Cat[Cat[U,T],U]
本身处于(-1)*(-1) == 1
的负位置。两个否定点在这里给出了正面,就像A
一样。应该很容易理解为什么:考虑两种类型B
和B
,A
是B <: A
的子类型(简称Cat[B, T] >: Cat[A, T]
)。然后T
适用于任何类型Cat[Cat[B, T], S] <: Cat[Cat[A, T], S]
(这只是反方位意味着什么)。然后是 function addtest() {
var element = '<div class="alert alert-info fade in" id="addtestheader"><span class="glyphicon glyphicon-plus"></span> Add New Test</div><em> All fields are mandatory</em><form><div class="form-inline"><div id="formelements"><label>1. Name of Test :</label><input type="text" class="form-control" id="testname" style="height:30px;" placeholder="Maximum 20 Characters"> <label>2. Scheduled on :</label><div id="datetimepicker" class="input-append date"><input type="text" style="height:30px;" placeholder="Date & Time of Test"></input><span class="add-on" style="height:30px;"><i data-time-icon="icon-time" data-date-icon="icon-calendar"></i></span></div></div></div><div class="alert alert-info fade in" id="addtestheader" style="height:25px;font-size:15px;padding:2px;"><span class="glyphicon glyphicon-user"></span> Select Target students for test</div><div class="form-inline"><div id="formelements"><div class = "input-group"><span class = "input-group-addon" style="width:40px;">3. Programme</span><select id="programme" name="programme" class="form-control" style="width:150px;" onchange="changeinprog();"><option value="0" selected>Select One</option><option value="1">B.Tech</option><option value="2">M.Tech</option><option value="3">MCA</option><option value="4">M.Sc.</option></select><span class = "input-group-addon">4. Branch</span><select id="branch" name="branch" class="form-control" onchange="changeofbranch();"><option value="0">Select Programme</option></select></div><div class = "input-group" style="margin-top:10px;"><span class = "input-group-addon" style="width:40px;">5. Semester</span><select id="semester" name="semester" class="form-control" style="width:150px;" onchange="changeinsemester();"><option value="0">Select Programme</option></select><span class = "input-group-addon">6. Course</span><select id="course" name="course" class="form-control" style="width:270px;" ><option value="0">Problem solving and programming skills</option></select></div></div></div><center><div id="errordiv" style="width:400px;"></div><button type="button" class="btn btn-success">Save</button><button type="button" class="btn btn-default">Cancel</button></center></form>';
document.getElementById('displaymasterblock').innerHTML = element;
$("#datetimepicker").datetimepicker({
format: "dd/MM/yyyy hh:mm:ss",
todayHighlight: true,
pick12HourFormat: true
});
}
。那就是它。