A Parameterless method should be called without parenthesis
scala> class SubjectInfo(nm: String, mk: Int){ | //A parameterless method #220 | // Use this convention when a method simply | // provides access to a property | def name = nm | def mark = mk | | //An empty-parent method | // Use this convention when the method | // does some operation or have side effects | def printInfo() = { | println("subject -> " + name + | ", mark -> " + mark) | } | } defined class SubjectInfo scala> scala> val sInfo = new SubjectInfo("math", 50) sInfo: SubjectInfo = SubjectInfo@2267b0bb scala> | /************************************ | Calling a Parameterless method | *************************************/ | //This convention of using Parameterless method | //supports 'uniform access principle' #221 | val name = sInfo.name name: String = math scala> scala> //Calling a Parameterless method with scala> //Parenthesis gives Compilation error scala> val name = sInfo.name() <console>:30: error: not enough arguments for method apply: (index: Int)Char in class StringOps. Unspecified value parameter index. val name = sInfo.name() ^ scala> scala> /************************************ | Calling an empty-paren method | *************************************/ | //An empty-parent method can be called without | // parenthesis | //It is always recommended/best practice | // to call empty paren method with parenthesis | // or else it will look like a property | sInfo.printInfo subject -> math, mark -> 50 scala> scala> //Always call an empty-parent method using scala> //empty parenthesis scala> sInfo.printInfo() subject -> math, mark -> 50