3
결국 버그가 발생한 문제가 있습니다. Android Studio에서 Groovy로 Android 앱을 프로그래밍하고 있습니다. 그것은 다음과 같은 코드에 대해 나에게 이상한 컴파일 에러를 제공합니다안드로이드에서 Groovy로 두 배의 정밀도를 잃어 버리는 실수가 있습니다.
def foo(float s) {
s = s/2 // compilation error with pointer at '/' position
s = s.toFloat()/254 // no error
}
컴파일 오류가 함수 내 첫 번째 행이 마지막 행으로 교체되는 경우에도 발생합니다.
또한 명령 줄에서 Android Studio 외부의 Groovy 1.8.6 환경에서 코드를 시도했습니다. 어떤 오류도주지 않습니다.
누가이 비정상적인 행동을 설명 할 수 있습니까? 이게 정상인가? 이것을 우회하는 더욱 영리한 방법이 있습니까? Groovy에 버그 티켓을 보내야합니까?
나는 오라클 JVM 1.8.0_92과 안드로이드 스튜디오 2.1.2을 사용하여 다음과 같은 Gradle을 의존하고있다 :
classpath 'com.android.tools.build:gradle:1.5.0'
classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.10'
compile 'org.codehaus.groovy:groovy:2.4.6:grooid'
편집는 :
/path/to/androidproject/Bar.groovy: 199: [Static type checking] - Possible loss of precision from double to float
@ line 199, column 19.
s = s/2
^
: 여기에 안드로이드 스튜디오에서 컴파일 오류가 온다
편집 2 : 다음 코드는 Android에서도 컴파일됩니다.
def foo(float s) {
s = s * 2
}
, 당신의 두번째 코드 예제가 작동합니다! 하지만 첫 번째 이유는 무엇입니까? 나는 이미 그것을 시도 했는가? –
분명히, 두 피연산자가 'float'이라도 구분은 항상 'double'을 산출합니다. 이상한! 's = (float) s/(float) 2;' – AhmadWabbi
그래서's = (float) s/(float) 2;의 결과는 무엇입니까? – AhmadWabbi