Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Kotlin: Unreachable code

Bom, quando tento criar um objeto do tipo Diretor, a parte do código em que eu crio o objeto fica em amarelo e não consigo fazer o println do objeto também. Aparece em amarelo e quando passo o mouse em cima diz "Unreachable code".

Classe Diretor:

class Diretor(
    nome: String,
    cpf: String,
    salario: Double,
    val senha: Int,
    val plr: Double
): Funcionario(
    nome = nome,
    cpf = cpf,
    salario = salario
) {
//    fun bonificacao(): Double {
//        return salario * 0.3
//    }

    fun autentica(senha: Int): Boolean {
        if (this.senha == senha) {
            return true
        }
        return false
    }
}

Parte do código em que aparece em amarelo:

 val gui = Diretor(
        nome = "Gui",
        cpf = "333.333.333-33",
        salario = 4000.0,
        senha = 4000,
        plr = 200.0
        )

    println()
    println("Nome: ${gui.nome}")
    println("Cpf: ${gui.cpf}")
    println("Salario: ${gui.salario}")
    println("Bonificação: ${gui.bonificacao()}")
    println("Plr: ${gui.plr}")

Código main:

fun main() {
    println("Bem vindo ao bytebank")

    val alex = Funcionario(
        nome = "Alex",
        cpf = "111.111.111-11",
        salario = 1000.0
    )

    println()
    println("Nome: ${alex.nome}")
    println("Cpf: ${alex.cpf}")
    println("Salario: ${alex.salario}")
    println("Bonificação: ${alex.bonificacao()}")
    println()

    val fran = Gerente(
        nome = "Fran",
        cpf = "222.222.222-22",
        salario = 2000.0,
        senha = 1234
    )

    println()
    println("Nome: ${fran.nome}")
    println("Cpf: ${fran.cpf}")
    println("Salario: ${fran.salario}")
    println("Bonificação: ${fran.bonificacao()}")

    if (fran.autentica(1234)) {
        return println("Autenticou com sucesso")
    } else {
        return print("Não foi autenticado")
    }

    val gui = Diretor(
        nome = "Gui",
        cpf = "333.333.333-33",
        salario = 4000.0,
        senha = 4000,
        plr = 200.0
        )

    println()
    println("Nome: ${gui.nome}")
    println("Cpf: ${gui.cpf}")
    println("Salario: ${gui.salario}")
    println("Bonificação: ${gui.bonificacao()}")
    println("Plr: ${gui.plr}")
}
1 resposta
solução!

Oie Lucas, tudo bem com você?

O "Unreachable code" acontece quando você tem um trecho de código que nunca será atingido. E isso aconteceu no seu código por conta dos "returns" que estão dentro do "if" - "else", já que os "returns" quebram a linha de raciocínio do código fazendo com que os dois blocos de código abaixo nunca sejam atingidos.

Portanto, para resolver esse problema basta tirar os "returns" ou passar todo esse código inalcançável para cima, numa posição que vem antes das condicionais.

Segue o código de uma dessas opções:

fun main() {
    println("Bem vindo ao bytebank")

    val alex = Funcionario(
        nome = "Alex",
        cpf = "111.111.111-11",
        salario = 1000.0
    )

    println()
    println("Nome: ${alex.nome}")
    println("Cpf: ${alex.cpf}")
    println("Salario: ${alex.salario}")
    println("Bonificação: ${alex.bonificacao()}")
    println()

    val fran = Gerente(
        nome = "Fran",
        cpf = "222.222.222-22",
        salario = 2000.0,
        senha = 1234
    )

    println()
    println("Nome: ${fran.nome}")
    println("Cpf: ${fran.cpf}")
    println("Salario: ${fran.salario}")
    println("Bonificação: ${fran.bonificacao()}")

    if (fran.autentica(1234)) {
        println("Autenticou com sucesso")
    } else {
        print("Não foi autenticado")
    }

    val gui = Diretor(
        nome = "Gui",
        cpf = "333.333.333-33",
        salario = 4000.0,
        senha = 4000,
        plr = 200.0
        )

    println()
    println("Nome: ${gui.nome}")
    println("Cpf: ${gui.cpf}")
    println("Salario: ${gui.salario}")
    println("Bonificação: ${gui.bonificacao()}")
    println("Plr: ${gui.plr}")
}

Espero que eu tenha ajudado, qualquer dúvida ou problema fico a disposição :)

Bons estudos!