Если есть функция f(x)
, а тип x может быть Int или String, если это Int, то этот f вернет x+1
, если это String, тогда f обратит x и вернет его.
Это легко в динамически типизированных языках, таких как python и javascript, которые просто используют isinstance(x, Int)
.
Мы можем знать его тип и делать что-то с if-else, но в статических языках типа, таких как kotlin, я не знаю, как это сделать?Поскольку я не знаю, как сделать так, чтобы x имел тип, который может быть Int или String.
def f (x):
if isinstance(x, int):
return x+1
if isinstance(x, str):
return x[::-1]
в haskell, у нас есть сопоставление с образцом, чтобы сделатьчто
f :: Either Int String -> Either Int String
f (Left x) = Left (x + 1)
f (Right x) = Right (обратный х)
а в котлине?