Rubyで文字列からn文字を分岐なく取り出すには


Rubyで文字列末尾からn文字を取り出したいです

Ruby の String#slice は、第一引数に「文字列の長さ+1」を超える絶対値を持つ数値を渡すと nil を返却します  
そのため、安易に `str.slice(-n, -1)` としてしまうと nil が返却されてしまい、nil チェックなしに String
のメソッドを利用すると NoMethodError が発生してしまいます  
(n は必ず正の整数です)

Ruby では「文字列の末尾n文字を得る」という至極単純な操作を分岐なしに実現することは本当にできないのでしょうか?  
`str.slice(-n, -1) || ""` で限界なのでしょうか?




元の文字列を`str`、欲しい末尾からの文字数が`n`とした場合

[code]

    str.slice((str.length - n), n) || str
    
[/code]

という方法があるとおもいます。

`||`以降は、length < n の場合、全文字列を返すことで足りないけど、後ろから`n`文字は全文字列だよという感じで




元の文字列を`str`、欲しい末尾からの文字数が`n`とした場合

[code]

    str.slice((str.length - n), n) || str
    
[/code]

という方法があるとおもいます。

`||`以降は、length < n の場合、全文字列を返すことで足りないけど、後ろから`n`文字は全文字列だよという感じで

