这很奇怪,但我的代码打印url <- c("first_url", "second_url")
result <- vector("list", length(url))
for(i in 1:length(url)){
result[[i]] <- tryCatch({sd_cat(url[i])}, error=function(err) "Error 404")
}
。任何想法为什么会这样做?
u
答案 0 :(得分:2)
您的代码解释字符串&#34;&#34;作为PartialFunction
:
val result: PartialFunction[Int, String] = "<undef>"
result.apply(1) // second character of "<undef>" --> u
这是通过从String
到WrappedString
的隐式转换实现的,Seq[Char]
是Seq[T]
的子类型。此外,PartialFunction[Int, T]
是Seq
的子类型(给定索引,如果存在,则获取f1
的元素。)
最后一行达到了这种情况,因为1不能被2,3,5中的任何一个整除(因此它会落在f2
,f3
和applyOrElse
)。
您需要的是val fun = f1 orElse f2 orElse f3
fun.applyOrElse(1, "<undef>") // --> "<undef>"
:
val result = f1 orElse f2 orElse f3 orElse {
case _ => "<undef>"
}
或者,您可以指定回退部分功能:
i.putStringArrayListExtra("dataList", data1);