Thank you for replying.
But I do not get it completely, why does the "this.type“” necessary? 
why could not it be like:

def setStepSize(step: Double): Unit = {
    require(step > 0,
      s"Initial step size must be positive but got ${step}")
    this.stepSize = step
}

On Mon, Jul 24, 2017 at 11:29 AM, M. Muvaffak ONUŞ <onus.muvaffak@gmail.com> wrote:
Doesn't it mean the return type will be type of "this" class. So, it doesn't have to be this instance of the class but it has to be type of this instance of the class. When you have a stack of inheritance and call that function, it will return the same type with the level that you called it.

On Sun, Jul 23, 2017 at 8:20 PM Reynold Xin <rxin@databricks.com> wrote:
It means the same object ("this") is returned.

On Sun, Jul 23, 2017 at 8:16 PM, tao zhan <zhantao92@gmail.com> wrote: