Music (Sequence) Callback Question

  new_song.sequence:play(current_playlist:next_song())

For my example: new_song is a Song object, which contains a sequence member variable. I have songs organized into playlists (also objects), and next_song() is a member function of Playlist objects.

When running this code, I end up running next_song() in this line, which is an issue as I intend to run this function only at the end of the sequence. I realize why this is happening, but I'm unsure of the remedy.

There must be something obvious that I'm just too tired to see, but I'm unsure of how to pass a member function as a callback to the :play() function.


PS - I do see the obvious idea of making next_song() a stand-alone function and passing the playlist. That might be where I go with it, but I'm still curious about the answer to this question. Member function as a callback solution would be preferred.


PPSS - I found another interesting solution. In Playlist:init(self) I can declare the function as such:

  self.next_song = function ()
    print("do next song stuff")
  end

and then set the callback like this:

 new_song.sequence:play(current_playlist.next_song)

Is this inefficient? Maybe. Is this working? Yes.