Se for isso, tanto C# quanto Java não têm valores de segunda classe, porque structs, classes e tipos primitivos podem ser passados de/para métodos, etc.
Como a tal página é velha (1997), então ela não considerou a evolução das linguagens. O exemplo dado (Pascal não poder retornar em um método um “record”) não vale mais.
W
windsofhell
hahahaha engracado que se alguem pergunta alguma coisa sobre C ia ter 20 nego respondendo.
Como eh C# sempre aparece alguem “reclamando” que aqui eh forum de Java
P
pcalcado
mcbarsotti:
cara, aqui é um forum de Java, vai no site da msdn que talvez eles te ajudam!
boa sorte!
Não senhor, esse aqui é o forum “Outras linguagens”, que fica na seção de mesmo nome que abriga também o forum de Ruby. E mesmo antes de existir essa seção específica o GUJ sempre foi aberto à praticamente qualquer assunto referente ao desenvolvimento de software.
L
louds
E ai? oq vcs acham?
Tipos escalares suportam as mesmas operações que tipos por referência. Poderia citar exemplos de quais operações são restritas? Conheço a CLR razoavelmente bem e não tenho um exemplo disso. Não é o caso dos tipos primitivos do Java, por exemplo.
R
raffccc
Bem galera… vlw pela ajuda ai!
Pesquisando um pouquinho e lendo um livro aqui sobre Paradigmas de Linguagens de Programação cheguei a seguinte conclusao
Em C# temos valores de segunda classe como por exemplo no código abaixo, uma abstração de procedimento.
public void oiMundo() {
Console.write("oiMundo");
}
Onde viola o princípio da completude de tipo pois uma abstração de procedimento não pode ser um argumento para um abstração de função.
R
ramilani12
Eu desconehcia esse principio:
Lendo mais cheguei nesse afirmação:
Se nenhuma operação nao deve ser restringida pelo tipo de valores envolvidos em Java a sobrecarga d metodos não violaria esse principio?
Tipo:
Acho que falei a besteira qnto a sobrecarga.
A sobrecarga de metodos é um caracteristica da Orietancao a Objetos.
Mas mudando o tipo da pergunta linguagens orientada a objetos que suportam a sobrecarga não violaria esse principio?
B
Bruno_Laturner
Eu entendi nenhuma construção da linguagem.
Por exemplo, o switch do Java é restrito a tipos primitivos e enums. Obedecer esse princípio significaria que Strings, BigDecimals e qqr outro objeto que implemente comparações poderia ser usado no switch.
É a minha opinião.
T
thingol
Em C# é possível, mas com um pouco de trabalho, receber e retornar referências a métodos também.
Este código foi testado com o Visual Studio 2008.
// Requer .NET Framework 3.5 (Visual Studio 2008) para rodarclassExemplo{// Teste para procedimentospublicvoidoiMundo(){Console.WriteLine("Oi, mundo!");}publicvoidadeusMundoCruel(){Console.WriteLine("Adeus, mundo cruel!");}publicActionretornaAcao(intn){switch(n){case1:returnoiMundo;case2:returnadeusMundoCruel;default:returnnull;}}publicvoidexecutaAcao(Actionact){act();}// Teste para funçõespublicintmax(intx,inty){returnx>y?x:y;}Func<int,int,int>min=(x,y)=>x<y?x:y;publicintexecutaFuncao(Func<int,int,int>f,intx,inty){returnf(x,y);}publicExemplo(){retornaAcao(1)();executaAcao(retornaAcao(2));Console.WriteLine("Maximo de 10 e 20 eh "+executaFuncao(max,10,20));Console.WriteLine("Minimo de 10 e 20 eh "+executaFuncao(min,10,20));}}
R
raffccc
Em C# é possível, mas com um pouco de trabalho, receber e retornar referências a métodos também.
Este código foi testado com o Visual Studio 2008.
Qual o problema disso? Se tem algum
T
thingol
Só falei “um pouco de trabalho” porque não é intuitivo.
A saída esperada dele, se você instanciar um elemento da classe Exemplo, é
Oi, mundo!
Adeus, mundo cruel!
Maximo de 10 e 20 eh 20
Minimo de 10 e 20 eh 10
L
louds
raffccc:
Bem galera… vlw pela ajuda ai!
Pesquisando um pouquinho e lendo um livro aqui sobre Paradigmas de Linguagens de Programação cheguei a seguinte conclusao
Em C# temos valores de segunda classe como por exemplo no código abaixo, uma abstração de procedimento.
public void oiMundo() {
Console.write("oiMundo");
}
Onde viola o princípio da completude de tipo pois uma abstração de procedimento não pode ser um argumento para um abstração de função.
Em C# 3.0 é possível converter qualquer expressão em dados:
static void If (Func<bool> cond, Action then, Action else_) {
if (cond())
then();
else
else_();
}
static void Main () {
If (()=> true , ()=> Console.WriteLine ("Oi Mundo"), ()=> Console.WriteLine ("Nada no else") );
}
C# 3.0 tem closures, ainda não existe conversão automática de código em closures, mas isso é outra história.
M
mcbarsotti
pcalcado:
mcbarsotti:
cara, aqui é um forum de Java, vai no site da msdn que talvez eles te ajudam!
boa sorte!
Não senhor, esse aqui é o forum “Outras linguagens”, que fica na seção de mesmo nome que abriga também o forum de Ruby. E mesmo antes de existir essa seção específica o GUJ sempre foi aberto à praticamente qualquer assunto referente ao desenvolvimento de software.
opaa, é a força do habito!! :lol:
mas se a idéia é abragir qualquer assunto relacionado ao desenvolvimento, não deveriam trocar o slogan do guj “e o maior forum brasileiro sobre Java” por “e o maior forum brasileiro sobre Desenvolvimento e Java” ou algo do tipo :roll:
abraços!
P
pcalcado
Continuamos sendo o maior forum sobre Java. O slogan nao diz que o forum eh somente sobre Java