给定:一个简单的4x2数据帧,其中填充了字符类型的数据
目标:相同的数据框,但所有值均替换为对它们应用以下lubridate函数调用的结果: parse_date_time(df, orders = c ("ymd_hms", "mdy_hms"), tz = "ETZ")
似乎使用lapply可以正常工作。使用sapply时,parse_date_time函数返回奇怪的大整数。
数据如下:
df <- as.data.frame(stringsAsFactors = FALSE, matrix(c("2014-01-13 12:08:02", "2014-01-13 12:19:46", "2014-01-14 09:59:09", "2014-01-14 10:05:09", "6-18-2016 17:43:42", "6-18-2016 18:06:59", "6-27-2016 12:16:47", "6-27-2016 12:29:05"), nrow = 4, ncol = 2, byrow = TRUE))
colnames(df) <- c("starttime", "stoptime")
这是sapply调用:
df2 <- sapply(df, FUN = function(column) {
parse_date_time(column, orders = c("ymd_hms", "mdy_hms"), tz = "ETZ")
})
和讨厌的电话:
df2 <- lapply(df, FUN = function(column) {
parse_date_time(column, orders = c("ymd_hms", "mdy_hms"), tz = "ETZ") …
在 scala 中,函数的输出类型是协变的,输入类型是逆变的。
例如,如果Dog是 的子类型Animal,则
T => Dog是 的子类型T => Animal,并且
Animal => T是 的子类型Dog => T
换句话说, 的生产者Dog可以前往 的生产者Animal期望的地方,而 的消费者Animal可以前往 的消费者Dog期望的地方。
那么为什么我会收到这个编译错误:
def useF(f: Nothing => Unit): Unit = ()
def f(x: Unit): Unit = ()
useF(f) // ok
useF(() => ()) // error
/*
example.scala:4: error: type mismatch;
found : () => Unit
required: Nothing => Unit
useF(() => ())
*/ …Run Code Online (Sandbox Code Playgroud) scala covariance higher-order-functions unit-type bottom-type