Skip to content

Translate tour/default-parameter-values to Scala 3 #2493

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 16, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions _tour/default-parameter-values.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,45 @@ redirect_from: "/tutorials/tour/default-parameter-values.html"

Scala provides the ability to give parameters default values that can be used to allow a caller to omit those parameters.

{% tabs default-parameter-values-1 %}
{% tab 'Scala 2 and 3' for=default-parameter-values-1 %}
```scala mdoc
def log(message: String, level: String = "INFO") = println(s"$level: $message")

log("System starting") // prints INFO: System starting
log("User not found", "WARNING") // prints WARNING: User not found
```
{% endtab %}
{% endtabs %}


The parameter `level` has a default value so it is optional. On the last line, the argument `"WARNING"` overrides the default argument `"INFO"`. Where you might do overloaded methods in Java, you can use methods with optional parameters to achieve the same effect. However, if the caller omits an argument, any following arguments must be named.

{% tabs default-parameter-values-2 %}
{% tab 'Scala 2 and 3' for=default-parameter-values-2 %}
```scala mdoc
class Point(val x: Double = 0, val y: Double = 0)

val point1 = new Point(y = 1)
```
{% endtab %}
{% endtabs %}

Here we have to say `y = 1`.

Note that default parameters in Scala are not optional when called from Java code:

{% tabs default-parameter-values-3 %}
{% tab 'Scala 2 and 3' for=default-parameter-values-3 %}
```scala mdoc:reset
// Point.scala
class Point(val x: Double = 0, val y: Double = 0)
```
{% endtab %}
{% endtabs %}

{% tabs default-parameter-values-4 %}
{% tab 'Java' for=default-parameter-values-4 %}
```java
// Main.java
public class Main {
Expand All @@ -44,3 +60,5 @@ public class Main {
}
}
```
{% endtab %}
{% endtabs %}