Что такое «объявление ожидаемого члена», когда синтаксис правильный? - PullRequest
0 голосов
/ 18 ноября 2018

Итак, я хотел реализовать простой класс обработчик базы данных для моего проекта Android Studio с Kotlin . Мало ли я знал, когда я посмотрел в глаза своим товарищам-разработчикам «что даже есть kotlin», что этот хипстерский выбор приведет меня к долгому проклятию.
Я решил начать с копирования кода , который Google предлагает для помощника БД, использующего класс SQLiteOpenHelper.

Естественно , я начал получать эту необоснованную ошибку
enter image description here
для каждого из закрывающих скобок } в 3 различных метода , содержащих то, что выглядело как совершенно правильный синтаксис.
enter image description here

Конечно, я потратил целый день на проверку каждой части раздражающего свойства сборки Gradle, которая, кажется, существует только для того, чтобы увеличить шансы на что-то отключенное, как если бы это была идеально разработанная система сборки разработчика-Limbo от Ада. Но каждая маленькая проверка была безрезультатной, так как у меня не было ошибок сборки, и ошибки «Ожидающий член» продолжали появляться.

Решил не выходить, однако я даже попытался изменить свою реализацию, чтобы использовать более дружественный к Kotlin маршрут anko.db, полный код которого приведен ниже.

package com.example.john.myapplication

import android.content.Context
import android.database.sqlite.SQLiteDatabase
import org.jetbrains.anko.db.*

class DBHandler(context: Context) : ManagedSQLiteOpenHelper(context, "POIEncounters", null, 1) {

    override fun onCreate(db: SQLiteDatabase?) {
        db?.createTable("Encounter", true, "id" to INTEGER + PRIMARY_KEY + UNIQUE, "Name" to TEXT)
    }

    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
        db?.dropTable("Encounter", true)
    }

    override fun onDowngrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
        onUpgrade(db, oldVersion, newVersion)
    }

}

Как предписывает Божественный Порядок в Limbo Developer, не изменилось . Каждый раз, когда я нажимаю Build, меня обманывают закулисные заверения проверки синтаксиса, поскольку компилятор отрицает мое спасение. Еще более удивительно. ошибки сохраняются , даже если я закомментирую все тела переопределенных методов .

В этот момент я настолько отчаялся, что упал на самый низкий уровень бездны: отвергая свое эго и прося о помощи.

1 Ответ

0 голосов
/ 18 ноября 2018

Для тех, кто недостаточно смел, чтобы стать свидетелем процесса, TLDR в конце.

Ответ даю я сам, после 3 бесконечных эпох ( см .: дни) в этом непростительном адском измерении, написанном в 3 часа ночи с единственной компанией бутылки виски Glenfiddich, соединенной в темноте от звуков моей демонизированной скрипки клавиатуры.

Обычные подозреваемые в простых орфографических ошибках , неверное использование конструктора отбрасывались снова и снова, когда я опускался в безумие, теперь вполне уверен, что дажеесли кто-то скопирует мой точный код, он может даже не получить эту ошибку.

Я даже пытался попробовать понизить сам Kotlin, в бредовых надеждах на ошибку в его компиляторе, приводящую ко всем этим настойчивым бормотаниям «Ожидающего объявления» ...
В последнем безумномЯ даже попытался импортировать мой код в другую адскую махинацию IDE, просто чтобы посмотреть, последуют ли за мной апокрифические сообщения, в Intellij IDEA ...

Еще через часмучений, чтобы выровнять файлы сборки нового проекта и другие ужасные свойства, вызывающие незначительные проблемы ... Они сделали.
enter image description here

Я собиралсясдаваться, и когда я заметил этот странный, незнакомый знак проверки синтаксиса Intellij: Found byte-order-mark in the middle of a file <...> enter image description here

SON.OF.A. BENCH.

Теперь, в этой невероятно мучительной части моего путешествия, как и многие другие разработчики, живущие в блаженной небесной области ", набирается код, который анализируетсякак ты это читаешь ", у меня не было идеи о разветвлении что такое BOM .

И все же небесная ИДЕЯ даже дает нам запрещенное, темное знание о ссылке в Википедии, за которой я следовал в глупой невинности, чтобы увидеть сводящий с ума любопытный фрагмент космоса, на который человек не должен был смотреть...
enter image description here

Что за вилка.

Мои пальцы дрожали и начали двигаться влихорадочный климакс.Я услышал, как хрипит, погружаясь в нереальное безумие последней иррациональной надежды ...

Я удалил 3 метода.Вычеркнул их всех в нечестивом, функционально-безумном безумстве и пристально посмотрел на пустой класс, свободный от невидимой, тошнотворной инфекции.

Build. *click* Success.


I переписал каждый из методов вручную , без копирования или прикосновения к любой зараженной дьяволом части мерзоститекст, слушая изверг, потусторонний "Dethklok Awaken" зовет.И это было все.Это сработало.Я свободен, поднимаюсь в Элизиум, виски в одной руке и слезы падают на Пламя Внизу.
Но я опустошен и разочарован.Ибо хитрая тень была не осязаемым врагом, а эфемерной силой, нависшей над Атманом ...
С этим ответом, я надеюсь, никто не столкнется с той же ошибкой, что и я.Не готов, по крайней мере.


TLDR : был символ BOM , который вызывал ошибку.Интелли выяснил причину, а Android Studio - нет.Удаляли и переписывали проблемные части вручную, ничего не копируя, и это работало.

Эпилог : каждый день мы отдаляемся от света ASCII.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...