Cześć.
Kilka dni temu wpadłem na pomysł przyjrzenia się Kotlinowi. Po odejściu od Javy i poznaniu składni poczułem dziwne (wspaniałe) uczucie :-) Natomiast mam trochę noob question. Postanowiłem zobaczyć jak to jest gdy chcielibyśmy przepisać coś bezpośrednio z Javy. Jak wiadomo Kotlin wykorzystuje biblioteki Javy - przechodząc do pytania posłużę się pewnym przykładem.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws IOException {
double width, height, area;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter a length of rectangle: ");
width = Double.parseDouble(reader.readLine());
System.out.println("Enter a width of rectangle: ");
height = Double.parseDouble(reader.readLine());
area = width * height;
System.out.println("Area of rectangle with " + width + " width and " + height + " height is: ");
System.out.println(area);
}
}
A teraz rozważmy taki zapis w Kotlinie:
import java.io.BufferedReader
import java.io.IOException
import java.io.InputStreamReader
@Throws(IOException::class)
fun main(args: Array<String>) {
val width: Double
val height: Double
val area: Double
val reader = BufferedReader(InputStreamReader(System.`in`))
println("Enter a length of rect: ")
width = java.lang.Double.parseDouble(reader.readLine())
println("Enter a width of rect: ")
height = java.lang.Double.parseDouble(reader.readLine())
area = width * height
println("Area of rect with $width width and $height height is $area")
}
Najbardziej interesuje mnie zapis z drugiego przykładu:
width = java.lang.Double.parseDouble(reader.readLine())
Ktoś piszący na co dzień w Kotlinie(o ile w ogóle występuje) byłby w stanie mi wyjaśnić jak bardzo złą praktyką byłby taki zapis z użyciem lib z Javy? Czy też z racji tego iż oba języki działają na JVMi (na pewnym poziomie) można je ze sobą w prosty sposób łączyć i czerpać pewne rozwiązania? Czy też wypadałoby nie stosować takiego "hackingu" w kodzie i przepisać całość po ludzki do wersji 100% Kotlin...