2017-09-25 9 views
6

क्या कोटलिन में बूलियन-इंट के बीच कनवर्ट करने का कोई अंतर्निहित तरीका नहीं है? मैं सामान्य के बारे में बात कर रहा हूं:बूलियन - कोटलिन में इंट रूपांतरण

true -> 1 
false -> 0 

यदि नहीं, तो ऐसा करने का एक बेवकूफ तरीका क्या है?

+0

क्या इस के लिए एक उपयोग के मामले हो सकते हैं? – nhaarman

+0

एक एपीआई के लिए अनुरोध करना जो फ़ील्ड के लिए 0 या 1 लौटाता है जो स्पष्ट रूप से सत्य/गलत होना चाहिए। साथ ही, मैं उसी प्रकार के फ़ील्ड के लिए समान एपीआई के लिए अन्य अनुरोध भी करता हूं जो मुझे सच/गलत वापस देता है। मैं उस कोड को साझा करना चाहता हूं जो सभी एपीआई से उस प्रतिक्रिया को संभालता है। – pk1914

उत्तर

13

आप एक API कि 0 या 1 रिटर्न एक क्षेत्र है कि स्पष्ट रूप से होना चाहिए के लिए के लिए एक अनुरोध बनाने की तरह

fun Boolean.toInt() = if (this) 1 else 0 
1

कोई रूपांतरित करने का कोई तरीका नहीं है। आप केवल कोड के नीचे का पालन करते हुए परिवर्तित कर सकते हैं

val output = if (input) 1 else 0 
2

बूलियन का एक विस्तार समारोह लिख सकते हैं सच/झूठा हो। साथ ही, मैं उसी प्रकार के फ़ील्ड के लिए समान एपीआई के लिए अन्य अनुरोध भी करता हूं जो मुझे सच/गलत वापस देता है। मैं उस कोड को साझा करना चाहता हूं जो सभी एपीआई से उस प्रतिक्रिया को संभालता है।

इस मामले में मुझे लगता है कि आपकी मैपिंग लाइब्रेरी (जैक्सन, आदि) के कनवर्टर का उपयोग करना सबसे अच्छा विकल्प होगा।

सादे कोटलिन में आप इस उद्देश्य के लिए विस्तार कार्य/संपत्ति का उपयोग कर सकते हैं।

6

मैं इस मामले में एक विस्तार संपत्ति साथ Boolean विस्तार करने के लिए सुझाव देंगे:

val Boolean.int 
    get() = if (this) 1 else 0 

अब आप बस अपने कोड में true.int कर सकते हैं

संबंधित मुद्दे