On 2016-02-19 00:33, Yuxuan Shui wrote:
Just come across Kotlin today, and found some interesting ideas skimming
through its tutorial:

1) Null check

Kotlin has Optional types, suffixed with a '?'. Like 'Int?', same as in
Swift. But instead of explicitly unwrapping them (e.g. var! in Swift, or
var.unwrap() in Rust), Kotlin let you do this:


     var: Int?
     if (var != null)
         //You can use var here


Skipping the null check will get you compile time error.

You can even do this:

     if (var == null) return;
     //You can use var from now on

I think the same applies to Swift. But I think you're supposed to use it like this:

if let a = var {
  // a is no unwrapped
}

I like the way it's used in Scala:

val a = Option(value)
val b = a.map(e => e /* do something with the unrapped e).getOrElse(/* use a default value here */)

The Option type in Scala acts like a zero or one element collection. The Scala way can be implemented in D as well without any language support.

2) Smart cast

This is a similar to previous one, instead of:

     var1: Object;
     var2 = cast(String)var1;

You do this:

     if (var1 is String)
         //You can use var1 as a String here

It's similar how it works in D, for Objects:

class Foo {}
Object foo = new Foo;

if (auto o = cast(Foo) foo)
    // use o as Foo here

When casting to a subclass it will return null reference if the cast fails.

--
/Jacob Carlborg

Reply via email to