C'è un modo per fare qualcosa di simile in C#?Ruby-like 'unless' per C#?
ie.
i++ unless i > 5;
Ecco un altro esempio
weatherText = "Weather is good!" unless isWeatherBad
C'è un modo per fare qualcosa di simile in C#?Ruby-like 'unless' per C#?
ie.
i++ unless i > 5;
Ecco un altro esempio
weatherText = "Weather is good!" unless isWeatherBad
Che dire:
if (i<=5) i++;
if (!(i>5)) i++;
avrebbe funzionato troppo.
Suggerimento: Non c'è unless
esatto equivalente.
EDIT: Questo è sbagliato come il Rubino unless
non ciclo come la mia idea. Ho risposto troppo velocemente.
Risposta sbagliata sotto
La syntactiaclly più vicina a quella con le parole chiave di base e gli operatori sarebbe qualcosa di simile
int x = 0;
do
{
x++;
} while (x < 5);
quindi l'idea sarebbe. [fare qualcosa] a meno che [condizione] si può pensare ad un inverso se – Konstantinos
[sì, è opposto 'se', ma non è un ciclo] (http://en.wikibooks.org/ wiki/Ruby_Programming/Sintassi/Control_Structures # unless_expression) – Reniuz
@Konstantinos: è necessario rivedere le altre risposte, questo è sbagliato in quanto avevo frainteso la sintassi ruby – xan
C'è' ternario ?:
-operator:
i = i > 5 ? i : i + 1
//if i>5 then i, else i++
(Supponendo che il codice rubino significhi quello che penso)
OK, se 'unless' è un ciclo, allora è tutta un'altra cosa ... Dovrei dire che non parlo ruby. – phg
[no its non loop] (http://www.tutorialspoint.com/ruby/ruby_if_else.htm) – Reniuz
Questo è un codice orribile e non funziona affatto. Il tuo codice è un no-op complicato. – CodesInChaos
È possibile ottenere qualcosa di simile con i metodi di estensione. Per esempio:
public static class RubyExt
{
public static void Unless(this Action action, bool condition)
{
if (!condition)
action.Invoke();
}
}
e quindi utilizzarlo come
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);
approccio interessante – Konstantinos
Le estensioni salvano sempre il giorno. –
no. C'è 'if' e'?: ', Ma non funziona così. – CodesInChaos
Penso che venire con un incremento sia stato un cattivo esempio, ne aggiungerò un altro nel caso in cui aiuti. – Konstantinos