2
respostas

current()

Não consigo fazer a função current exibir os valores em tela, porém consigo fazer o uso dela pra adicionar na minha SplDoublyLinkedList.

class TocadorDeMusica
{
    private $musicas;

    public function __construct()
    {
        $this->musicas = new \SplDoublyLinkedList();
        $this->musicas->rewind();
    }

    public function adicionarMusicas(\SplFixedArray $musicas)
    {
        for($musicas->rewind(); $musicas->valid(); $musicas->next()){
            $this->musicas->push($musicas->current());
        }
    }

    public function adicionaMusica($musica)
    {
        $this->musicas->push($musica);
    }

    public function adicionaMusicaNoInicioDaLista($musica)
    {
        $this->musicas->unshift($musica);
    }

    public function removerMusicaDoInicio()
    {
        $this->musicas->shift();
    }

    public function removerMusicadoFinalDaLista()
    {
        $this->musicas->pop();
    }

    public function mostrarNomes()
    {

        for($this->musicas->rewind(); $this->musicas->valid(); $this->musicas->next()){
            echo "Era pra ser aqui o nome<br/>";
            $this->musicas->current()."<br/>";
        }
    }


    public function tocarMusica()
    {   
        if($this->musicas->count() === 0){
            echo "Nenhuma música foi encontrada no tocador.<br/>";
        }else{
            echo "Tocando a música: ".$this->musicas->current()."<br/>";
        }
    }

    public function totalDeMusicas()
    {
        echo $this->musicas->count()."<br/>";
    }

}
2 respostas

Acho que descobri o motivo... quando exibo a key da lista, descobri que depois de exibir as músicas dentro da mesma, ela fica com indice que não tem valor e retorna null na função current.

Se alguns dos colegas achar outro motivo, me falem por favor.

O jeito que dei pra resolver o problema foi colocar o $this->musicas->rewind() no método

    public function mostrarNomes()
    {

        for($this->musicas->rewind(); $this->musicas->valid(); $this->musicas->next()){
            echo "Era pra ser aqui o nome<br/>";
            $this->musicas->current()."<br/>";
        }
    $this->musicas->rewind();
    }

Com essa linha, não tive mais o problema com o current.

Boa noite.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software