Why does 0 integer value behaves as false in if statement in groovy?
up vote
1
down vote
favorite
I wrote this part of code.
Integer value = 0
if(value)
{
print "true"
}
else
{
print "false"
}
And the output of code is false.
Can someone explain me why does Integer 0 value behaves as false in this if statement when it is not null and it exists?
if-statement groovy
add a comment |
up vote
1
down vote
favorite
I wrote this part of code.
Integer value = 0
if(value)
{
print "true"
}
else
{
print "false"
}
And the output of code is false.
Can someone explain me why does Integer 0 value behaves as false in this if statement when it is not null and it exists?
if-statement groovy
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I wrote this part of code.
Integer value = 0
if(value)
{
print "true"
}
else
{
print "false"
}
And the output of code is false.
Can someone explain me why does Integer 0 value behaves as false in this if statement when it is not null and it exists?
if-statement groovy
I wrote this part of code.
Integer value = 0
if(value)
{
print "true"
}
else
{
print "false"
}
And the output of code is false.
Can someone explain me why does Integer 0 value behaves as false in this if statement when it is not null and it exists?
if-statement groovy
if-statement groovy
asked Nov 20 at 13:26
Jakov Kusić
622312
622312
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
4
down vote
accepted
When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:
/**
* Coerce a number to a boolean value.
* A number is coerced to false if its double value is equal to 0, and to true otherwise,
* and to true otherwise.
*
* @param number the number
* @return the boolean value
* @since 1.7.0
*/
public static boolean asBoolean(Number number) {
return number.doubleValue() != 0;
}
Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
That is why Groovy coerce 0 to false and any non-zero number to true.
There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.
add a comment |
up vote
5
down vote
It's part of the "Groovy Truth"
5.7. Numbers
Non-zero numbers are true.
assert 1
assert 3.5
assert !0
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53394027%2fwhy-does-0-integer-value-behaves-as-false-in-if-statement-in-groovy%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
4
down vote
accepted
When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:
/**
* Coerce a number to a boolean value.
* A number is coerced to false if its double value is equal to 0, and to true otherwise,
* and to true otherwise.
*
* @param number the number
* @return the boolean value
* @since 1.7.0
*/
public static boolean asBoolean(Number number) {
return number.doubleValue() != 0;
}
Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
That is why Groovy coerce 0 to false and any non-zero number to true.
There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.
add a comment |
up vote
4
down vote
accepted
When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:
/**
* Coerce a number to a boolean value.
* A number is coerced to false if its double value is equal to 0, and to true otherwise,
* and to true otherwise.
*
* @param number the number
* @return the boolean value
* @since 1.7.0
*/
public static boolean asBoolean(Number number) {
return number.doubleValue() != 0;
}
Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
That is why Groovy coerce 0 to false and any non-zero number to true.
There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.
add a comment |
up vote
4
down vote
accepted
up vote
4
down vote
accepted
When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:
/**
* Coerce a number to a boolean value.
* A number is coerced to false if its double value is equal to 0, and to true otherwise,
* and to true otherwise.
*
* @param number the number
* @return the boolean value
* @since 1.7.0
*/
public static boolean asBoolean(Number number) {
return number.doubleValue() != 0;
}
Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
That is why Groovy coerce 0 to false and any non-zero number to true.
There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.
When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:
/**
* Coerce a number to a boolean value.
* A number is coerced to false if its double value is equal to 0, and to true otherwise,
* and to true otherwise.
*
* @param number the number
* @return the boolean value
* @since 1.7.0
*/
public static boolean asBoolean(Number number) {
return number.doubleValue() != 0;
}
Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
That is why Groovy coerce 0 to false and any non-zero number to true.
There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.
answered Nov 20 at 13:31
Szymon Stepniak
16.5k83062
16.5k83062
add a comment |
add a comment |
up vote
5
down vote
It's part of the "Groovy Truth"
5.7. Numbers
Non-zero numbers are true.
assert 1
assert 3.5
assert !0
add a comment |
up vote
5
down vote
It's part of the "Groovy Truth"
5.7. Numbers
Non-zero numbers are true.
assert 1
assert 3.5
assert !0
add a comment |
up vote
5
down vote
up vote
5
down vote
It's part of the "Groovy Truth"
5.7. Numbers
Non-zero numbers are true.
assert 1
assert 3.5
assert !0
It's part of the "Groovy Truth"
5.7. Numbers
Non-zero numbers are true.
assert 1
assert 3.5
assert !0
answered Nov 20 at 13:31
cfrick
18k13452
18k13452
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53394027%2fwhy-does-0-integer-value-behaves-as-false-in-if-statement-in-groovy%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown