Skip to content

Commit 696316a

Browse files
committed
Tutorials - Translation PT-BR - Default Parameter Values
1 parent 2b36da7 commit 696316a

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
layout: tutorial
3+
title: Valor Padrão de Parâmetro
4+
5+
disqus: true
6+
7+
tutorial: scala-tour
8+
num: 32
9+
tutorial-next: named-parameters
10+
tutorial-previous: annotations
11+
language: pt-br
12+
---
13+
14+
Scala provê a capacidade de fornecer parâmetros com valores padrão que podem ser usados para permitir que um usuário possa omitir tais parâmetros se preciso.
15+
16+
Em Java, é comum ver um monte de métodos sobrecarregados que servem apenas para fornecer valores padrão para determinados parâmetros de um método maior. Isso é especialmente verdadeiro com os construtores:
17+
18+
```java
19+
public class HashMap<K,V> {
20+
public HashMap(Map<? extends K,? extends V> m);
21+
/** Cria um novo HashMap com a capacidade padrão (16)
22+
* and loadFactor (0.75)
23+
*/
24+
public HashMap();
25+
/** Cria um novo HashMap com um fator de carga padrão (0.75) */
26+
public HashMap(int initialCapacity);
27+
public HashMap(int initialCapacity, float loadFactor);
28+
}
29+
```
30+
31+
Há realmente apenas dois construtores aqui; Um que recebe um map e outro que tem uma capacidade e um fator de carga. O terceiro e o quarto construtores estão lá para permitir que os usuários do <code>HashMap</code> criem instâncias com os valores padrões de fator de carga e capacidade, que provavelmente são bons para a maioria dos casos.
32+
33+
O maior problema é que os valores usados como padrões estão declarados no Javadoc *e* no código. Manter isso atualizado é complicado, pois pode ser esquecido facilmente. Um abordagem típica nesses casos seria adicionar constantes públicas cujos valores aparecerão no Javadoc:
34+
35+
```java
36+
public class HashMap<K,V> {
37+
public static final int DEFAULT_CAPACITY = 16;
38+
public static final float DEFAULT_LOAD_FACTOR = 0.75;
39+
40+
public HashMap(Map<? extends K,? extends V> m);
41+
/** Cria um novo HashMap com capacidade padrão (16)
42+
* e fator de carga padrão (0.75)
43+
*/
44+
public HashMap();
45+
/** Cria um novo HashMap com um fator de carga padrão (0.75) */
46+
public HashMap(int initialCapacity);
47+
public HashMap(int initialCapacity, float loadFactor);
48+
}
49+
```
50+
51+
Enquanto isso nos impede de nos repetir, é menos do que expressivo.
52+
53+
Scala adiciona suporte direto para isso:
54+
55+
```tut
56+
class HashMap[K,V](initialCapacity:Int = 16, loadFactor:Float = 0.75f) {
57+
}
58+
59+
// Utiliza os valores padrões (16, 0.75f)
60+
val m1 = new HashMap[String,Int]
61+
62+
// Inicial com capacidade 20, e fator de carga padrão
63+
val m2= new HashMap[String,Int](20)
64+
65+
// Sobreescreve ambos os valores
66+
val m3 = new HashMap[String,Int](20,0.8f)
67+
68+
// Sobreescreve somente o fator de carga
69+
// parâmetro nomeado
70+
val m4 = new HashMap[String,Int](loadFactor = 0.8f)
71+
```
72+
73+
Observe como podemos tirar proveito de *qualquer* valor padrão usando [parâmetros nomeados](named-parameters.html).
74+

0 commit comments

Comments
 (0)