我希望以下内容能够奏效:
void takeOnlyStrings(String* s) {
print(s);
}
{String|Integer*} ab = {"Hi", 1};
takeOnlyStrings(for (item in ab) if (item is String) item);
甚至这个:
Boolean isString(Object o) => (o is String);
takeOnlyStrings(ab.filter(isString));
但没有运气。
答案 0 :(得分:5)
缩小值类型的语法是前缀is Type val
,例如:
void takeOnlyStrings(String* s) {
print(s);
}
{String|Integer*} ab = {"Hi", 1};
takeOnlyStrings(for (item in ab) if (is String item) item);
语法item is String
只是一个生成Boolean
值的运算符表达式。它并没有缩小其论证的类型。
答案 1 :(得分:5)
这是第二种可能性:在Ceylon 1.2中,可以使用新方法var fullscreen = document.getElementById('fix-fullscreen'),
player = document.getElementById('player');
fullscreen.addEventListener('click', function (e) {
if (~player.src.indexOf('?')) player.src += '&autoplay=1';
else player.src += '?autoplay=1';
var req = player.requestFullscreen
|| player.webkitRequestFullscreen
|| player.mozRequestFullScreen
|| player.msRequestFullscreen;
req.call(player);
e.preventDefault();
});
:
Iterable.narrow()
希望有所帮助!