dúvida sobre return

18 respostas
israelwm

olá, primeiro desculpa pelo tanto de post com dúvidas, mas sabe como é, to começando agora e tal, as vezes uma resposta rápida de um usário experiente é melhor que ficar vasculhando a ducomentação por uma coisa taum simples…

vamos lá…

dada a função:

public static boolean funcaoLegal(int i) { if (i == 1) { return true; } return false; }

a pergunta é a seguinte, se i for igual a 1 então ele vai retornar como true, dai ele saí do método? Ele sai sagrado sem dúvidas?
Pergunto porq métodos como esse poderiam ser mais exutos do jeito que está em vez de tratar desta maneira:

public static boolean funcaoLegal(int i) { if (i == 1) { return true; } else { return false; } }

Obs: se tiver algum erro de sintaxe, ignore, eu fiz direto aki no cruj

18 Respostas

Jair_Rillo_Junior

sim. quando ele encontrar um return ele sai do método…

Essa dúvida vc podia tirar ela, fazendo um código, colocando um Break Point no IF e debugando o código que você iria verificar que ele realmente sai do método
:lol:

danieldestro

O return pára a execução do método, fique tranquilo.
Salvo SE tiver um finally.

public boolean verificar( int i ) { try { // faz algo if( i == 100 ) { return true; } return false; } catch( Exception e ) { /* tratar */ } finally { //sempre passa aqui } }

israelwm

Valeuzão pessoal.

renatosilva

Já li uma vez num livro que não é bom dar return espalhado no método, mas sim apenas um no final, usando uma variável temporária para guardar o valor. Isso garante que seu método não escape indevidamente. Acho que é por isso a dica do livro.

israelwm

é eu também li alguma coisa, acho que foi num livro de Delphi, tanto que se vc naum colocar um return (acho que no delphi e result) no bloco principal da função, ele dá uma mensagem de erro (o programa compila normal, mas nas mensagens de erros (hints) fica uma mensagem que está tendo algum problema com a função que naum retorna).

cv1

Alias, da pra condensar o seu exemplo em uma linha:

public boolean metodo(int i) { return i == 1; }

Muita gente tem ataques de panico quando ve codigo do tipo if(x) return true; else return false;, entao pode ser uma boa nao pegar essa mania :slight_smile:

renatosilva

No delphi não tem muito a ver, o return é um comando que você fornece um valor. No Delphi você usa Result, que é uma variável implícita que não interrompe o método quando atribuída. Para interromper o Método usa-se Exit. Na prática o return do Java é um “Result := SomeValue; Exit;” do Delphi. O troço dá erro porque toda função deve retornar um valor.

cv:
Alias, da pra condensar o seu exemplo em uma linha:

public boolean metodo(int i) { return i == 1; }

Eu me amarro nisso! A sensação de condensar expressões assim é quase um esporte :smiley:

israelwm

cv:
Alias, da pra condensar o seu exemplo em uma linha:

public boolean metodo(int i) { return i == 1; }

Muita gente tem ataques de panico quando ve codigo do tipo if(x) return true; else return false;, entao pode ser uma boa nao pegar essa mania :)

Pois é, uma das vantagens que vi em java é a praticidade, tipo imprimir uma variavel boolean, hehehe pascal era moh saco. tem uma coisa que vi que achei legal tb, são os operadores ternários:

int varint = 10; boolean varboolean = false; varint = (varboolean == true) ? 100 : 1000;

é o mesmo que:

int varint = 10; boolean varboolean = false; if (varboolean == true) { varint = 100; } else { varint = 1000; }

muito loco neh.

renatosilva

Não seja tão genérico ao dizer que o Java tem praticidade, porque às vezes a linguagem Pascal pode ser mais prática do que o java.

@+ ps: essa coisa de bool = ((x == 144) || (y >= 144)) o Pascal também tem.

Thiago_Senna

Aiaiai!!!

Lá vem o Renato falar das mil maravilhosas que o pascal pode fazer…
Só não provoquem ele por que se não ele vai ensinar todo mundo como funciona um botão do Delphi com o maior número de riqueza de detalhes possível!!!

Saiam de perto que lá vém mais um show!!!
:lol: :lol: :lol:

israelwm

renato3110:
Não seja tão genérico ao dizer que o Java tem praticidade, porque às vezes a linguagem Pascal pode ser mais prática do que o java.

@+ ps: essa coisa de bool = ((x == ) || (y >= 144)) o Pascal também tem.

Sério como é em Pascal então? eu naum me lembro de usar isso em Pascal (Pascal puro), mas acho Delphi tb naum tinha.

renatosilva

Israel, é igual, só muda a sintaxe:

BooleanVar := (X = 144) or (Y <> 144)

Pelo menos no Delphi eu uso isso direto.

israelwm

Aa soh, isso sim, mas tava dizendo a parada Ternário (naum sei daonde q eu li esse nome) mas blz, de qualquer modo vou ter q ficar programando aqui na Jaca mesmo.

renatosilva

A parada do interrogação? Ah isso não tem, nunca vi. Mas pô todo mundo fala que isso é uma porcaria, faz o código ficar tosco!!!

V

Depende né? Tem situações que é útil… em todo caso, na minha opinião, só você ver se o código ficará claro e mais simples de entender, se estiver, então beleza… aliás, isso vale pra tudo, quase sempre

israelwm

Eu gostei do “ternários”, ou seja lá que nome deram, as vezes é bom, qndo são atribuidos valores a uma variavel somente com uma condição boolean

Thiago_Senna

Humm… operador ternário???

Ele é legal para quem gosta de escrever métodos pequenos, pois esse operador apesar de feio ocupa pouco espaço…
Mas o chato dele é que ele é chatinho de entender… um leigo provavelmente não se familizarizará com ele tão facilmente! Eu mesmo ficou perdido na hora de usá-lo!!!

israelwm

Thiago Senna:
Humm… operador ternário???

Ele é legal para quem gosta de escrever métodos pequenos, pois esse operador apesar de feio ocupa pouco espaço…
Mas o chato dele é que ele é chatinho de entender… um leigo provavelmente não se familizarizará com ele tão facilmente! Eu mesmo ficou perdido na hora de usá-lo!!!

é, é verdade, ele deixa o codigo meio confuso mesmo, qndo tenho q usar eu copio de um lugar q sei q estah certo ehheheheeh

Criado 6 de abril de 2005
Ultima resposta 7 de abr. de 2005
Respostas 18
Participantes 7