On Mon, Nov 16, 2009 at 4:17 AM, Eros Candelaresi <[email protected]>wrote:
> > The use of open_! seems safe to me here because all paths return > Full(String). > > Please only use open_! is there's no other good alternative (I try to comment my use of open_! so that other developers understand that there are precursors to calling a method that contains open_!). > I never thought of .map(), it was always a list operation for me. But > the shortness of the expression is impressive. > > Still have to get used to the for comprehension, so the .map() approach > will be the new favorite. :) > > Thanks a lot! > > Eros > > Jean-Luc wrote: > > *open_!* can be very convenient, but it can throw unexpected exceptions. > > Better to avoid its use whenever possible. > > > > And what about something like that : > > > > val username = User.find(id).map(_.name) getOrElse "User not found" > > > > or > > > > val username = (for(user <- User.find(id)) yield user.name > > <http://user.name>) getOrElse "User not found" > > > > Jean-Luc > > > > > > 2009/11/16 Eros Candelaresi <[email protected] > > <mailto:[email protected]>> > > > > > > Hi again, > > > > sorry for answering my own post. Should have looked at the > > documentation > > first. > > > > It's as simple as: > > > > val username = User.find(id).choice( Full(_.name) )( Full("User not > > found") ).open_! > > (not checked for syntax!) > > > > Regards, > > Eros > > > > > > Eros Candelaresi wrote: > > > Hi, > > > > > > I like the getOrElse way of accessing data very much as it allows > to > > > handle non-existing values with very little code. However, I am > > still > > > looking for a more elegant replacement for this: > > > > > > val username = User.find(id).getOrElse(User.create.name > > <http://User.create.name>("User not > > > found")).name > > > > > > Ok, this is very short already. But still it feels wrong to > > create an > > > instance of User (AFAIK a rather expensive operation, especially > > when > > > used while creating lists) when all I need is a string. > > > > > > How do you guys handle such cases? > > > > > > Regards, > > > Eros > > > > > > > > > David Pollak wrote: > > > > > >> On Thu, Nov 12, 2009 at 5:53 AM, Ferdinand Chan > > <[email protected] <mailto:[email protected]> > > >> <mailto:[email protected] <mailto:[email protected]>>> wrote: > > >> > > >> > > >> David, > > >> > > >> Thanks for the blog entry and it does a great job in > > explaining how > > >> Option works and how to use it. > > >> > > >> May I suggest that we add a link to this blog post on Lift > > Wiki??? > > >> Correct me if I'm wrong but I think most newbie to Scala / > > Lift may > > >> wonder and puzzle how Box / Option works. > > >> > > >> I know you're very busy and with your permission, I'm > > willing to add > > >> this to the wiki > > >> > > >> > > >> No permission required. Please add whatever valuable things to > the > > >> Lift wiki (the one at http://wiki.github.com/dpp/liftweb ) > > >> > > >> > > >> > > >> Oh, and I think I really need to tweak my mind a bit and > > start to > > >> think in a more functional / scala way > > >> > > >> > > >> Yeah... it's a change in mindset, but I think you'll find the > > change > > >> to be welcome in terms of your own productivity, your ability > > to read > > >> others' code, and overall code stability. > > >> > > >> Thanks, > > >> > > >> David > > >> > > >> > > >> > > >> Cheers, > > >> > > >> Ferdinand > > >> > > >> On Nov 12, 6:55 am, David Pollak > > <[email protected] <mailto:[email protected] > > > > >> <mailto:[email protected] > > <mailto:[email protected]>>> > > >> wrote: > > >> > > > >> > > > http://blog.lostlake.org/index.php?/archives/50-The-Scala-Option-clas... > > >> > > > >> > The for comprehension is your friend. > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > On Wed, Nov 11, 2009 at 2:40 PM, Ferdinand Chan > > >> <[email protected] <mailto:[email protected]> > > <mailto:[email protected] <mailto:[email protected]>>> wrote: > > >> > > > >> > > Wondering what's the normal practice of using a Box. As > > a Java > > >> > > developer, I always want to get the boxed value by a > > method named > > >> > > "Value" like > > >> > > > >> > > val optionalContent = Full("This is optional") > > >> > > > >> > > Log.info( " The optional content is " + > > optionalContent.value) > > >> > > > >> > > But I know its not a valid way to do so in lift ( same for > > >> Option in > > >> > > Scala) > > >> > > > >> > > From the book programming in Scala , there's an example > > >> > > > >> > > val withDefault: Option[Int] => Int = { > > >> > > case Some(x) => x > > >> > > case None => 0 > > >> > > } > > >> > > > >> > > which suggest the use of match to retrieve the value of > > the boxed > > >> > > content. It make sense to me and I'm totally agree with > the > > >> advantage > > >> > > of using match + option (Box) combination. > > >> > > > >> > > However, as a newbie to Scala, I'm so tempted to use > > something > > >> > > like .Value to retrieve the box value . > > >> > > > >> > > So, what's the normal way to use Box ?? Could someone > > kindly > > >> provide > > >> > > some example on how to use ? I tried to look through some > > >> source code > > >> > > of Lift but its not easy for a newbie :) > > >> > > > >> > > Thanks > > >> > > > >> > -- > > >> > Lift, the simply functional web > > frameworkhttp://liftweb.net <http://liftweb.net> > > >> <http://liftweb.net> > > >> > Beginning Scalahttp://www.apress.com/book/view/1430219890 > > <http://www.apress.com/book/view/1430219890> > > >> <http://www.apress.com/book/view/1430219890> > > >> > Follow me:http://twitter.com/dpp > > >> > Surf the harmonics > > >> > > >> > > >> > > >> > > >> -- > > >> Lift, the simply functional web framework http://liftweb.net > > >> Beginning Scala http://www.apress.com/book/view/1430219890 > > >> Follow me: http://twitter.com/dpp > > >> Surf the harmonics > > >> > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > Jean-Luc Canela > > [email protected] <mailto:[email protected]> > > > > > > > > > > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
