2012-04-24 12 views
13

¿Hay alguna manera de hacer algo similar en C#?Ruby-like 'a menos' para C#?

es decir.

i++ unless i > 5; 

aquí es otro ejemplo

weatherText = "Weather is good!" unless isWeatherBad 
+0

no. Hay 'if' y'?: ', Pero ninguno funciona así. – CodesInChaos

+0

Creo que generar un incremento fue un mal ejemplo, agregará uno más en caso de que sea útil. – Konstantinos

Respuesta

11

¿Qué hay de:

if (i<=5) i++; 

if (!(i>5)) i++; funcionaría también.


Consejo: No hay unless equivalente exacto.

0

EDITAR: Esto está mal ya que el Ruby unless NO gira como mi idea. Respondí muy rápido.

Respuesta equivocada continuación


El syntactiaclly más cercana a la de base con las palabras clave y operadores sería algo así como

int x = 0; 
do 
{ 
    x++; 
} while (x < 5); 
+0

por lo que la idea sería. [hacer algo] a menos que [condición] se puede pensar como un reverso si – Konstantinos

+1

[sí, es opuesto a 'si', pero no es un bucle] (http://en.wikibooks.org/ wiki/Ruby_Programming/Syntax/Control_Structures # unless_expression) – Reniuz

+0

@Konstantinos: necesita revisar las otras respuestas, esto está mal ya que no entendí la sintaxis de ruby ​​ – xan

0

Hay ternario ?: -operator:

i = i > 5 ? i : i + 1 
//if i>5 then i, else i++ 

(Suponiendo que el código Ruby signifique lo que pienso)

+0

OK, si 'a menos' es un ciclo, entonces eso es completamente diferente ... Debo mencionar que no hablo ruby. – phg

+0

[no its not loop] (http://www.tutorialspoint.com/ruby/ruby_if_else.htm) – Reniuz

+0

Este es un código horrible, y tampoco funciona en absoluto. Tu código es una complicada no operación. – CodesInChaos

21

Puede lograr algo como esto con los métodos de extensión. Por ejemplo:

public static class RubyExt 
{ 
    public static void Unless(this Action action, bool condition) 
    { 
     if (!condition) 
      action.Invoke(); 
    } 
} 

y luego usarlo como

int i = 4; 
new Action(() => i++).Unless(i < 5); 
Console.WriteLine(i); // will produce 4 

new Action(() => i++).Unless(i < 1); 
Console.WriteLine(i); // will produce 5 

var isWeatherBad = false; 
var weatherText = "Weather is nice"; 
new Action(() => weatherText = "Weather is good!").Unless(isWeatherBad); 
Console.WriteLine(weatherText); 
+1

enfoque interesante – Konstantinos

+0

Las extensiones siempre salvan el día. –

Cuestiones relacionadas