title: Why can't _ be used to indicate an unused/ignored argument in a method override?
body: <p>Consider:</p>
  
  <pre><code>trait Validation {
    def isValid(str: String): Boolean
  }
  class AlwaysValid extends Validation {
    override def isValid(_: String) = true
  }
  </code></pre>
  
  <p>yields</p>
  
  <pre><code>&lt;console&gt;:1: error: identifier expected but '_' found.
         override def isValid(_: String) = true
  </code></pre>
  
  <p>Any ideas why? Or is that just something the language designers missed?</p>
  
  <hr>
  
  <p>Maybe it's about named argument passing but this would only apply to non-overrides as overrides auto-"inherit" the argument names from the overridden method anyway, so this can't be it:</p>
  
  <pre><code>trait Foo {
    def bar(arg0: String): String
  }
  class Baz extends Foo {
    override def bar(blabla: String) = "hello"
  }
  
  new Baz().bar(arg0 = "world")  // works, even though the arg name is blabla in Baz
  </code></pre>
  
  <hr>
  
  <p><strong>Furthermore:</strong> <code>_</code> is allowed in lambdas, even multiple times:</p>
  
  <pre><code>scala&gt; val x: Int =&gt; Int = _ =&gt; 3
  x: Int =&gt; Int = &lt;function1&gt;
  
  scala&gt; val x: (Int, Int) =&gt; Int = (_, _) =&gt; 3
  x: (Int, Int) =&gt; Int = &lt;function2&gt;
  </code></pre>