编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   
 string.insert问题
指数 -> 编程,Ruby. -> 红宝石的帮助
查看上一个主题 可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
克莱顿




邮政发布: 2007年1月3日星期三6:44 PM  post主题:string.insert问题

我目前正在为铷编写一种方法,该方法应该采取发件人的名称,以及他们的消息,并将其输出到80个字符范围内(即,如果您键入消息100个字符长,则会得到一行〜 80个字符长[避免切断单词]和长达20个字符长加上发件人名称的长度的线路。为此,我只需在达到80个字符限制之前在最后一个空间中插入换行符(“\ n”)。但是,由于某种原因,我的“last_space”方法不是确定80个字符之前的最后一个空间的位置。这是我的代码,任何帮助都会受到赞赏:

红宝石:

def last_space(EIGHT_CHAR,LAST_CHAR,消息)
    如果 last_char. > message.长度 然后
       last_char =消息。长度
    结尾
    beginning_char.取决于(last_char.) |i|
        如果信息[i] ==. 然后
            return_char = i
        结尾
    结尾
结尾

def信息(发件人,消息)
    column_limit = 60
    如果信息。长度 < column_limit
        message
    别的
        i = 1
        last_char = 0
        直到信息。长度 < column_limit * i
           last_char = last_space.(last_char.,last_char + column_limit,message)
            message.(last_char., "\ n" + * sender.长度)
            i += 1
        结尾
        返回信息
    结尾
结尾

put信息(“弗雷克曼”, “测试”)

put "\ n"

put信息(“MD”, “这是我真正长的消息,不要被它劝阻,或者我会对你感到严重恼火!如果你讨厌我的打字,那么也搞砸了。我只是为了拥有这件事来搞砸了足以测试我的功能:D")
赞助
赞助
赞助
赞助
塞万提斯




邮政发布: 2007年1月3日星期三8:24 PM  帖子主题:(没有主题)

一些问题。

首先,在概念上,从Last_char开始并使用Fixnum#Downto来倒计时。
其次,如果声明从未成功的话,则是条件。您忘记了这样的切片,返回一个整数,这是角色的ASCII值。要修复它,将“”将“”[0]更改为“”,或将消息[i]更改为消息[i,1]。
第三,在完成此之后仍然无法正常工作。你认为你的魔法很少,你的工作不再工作了。它没有返回'return_char'的值,而是upto方法的值。 obgto回报 自己,所以3.upto(5){| x | PUTS X}将返回3。
克莱顿




邮政发布: 2007年1月3日星期三:下午9:03  帖子主题:(没有主题)

谢谢!它刚刚起身吓坏了 很高兴 关于消息[i]的事情,我在发布了代码后不久意识到,它不再值得发布。这是具有所有更改的Last_space()方法:

红宝石:

def last_space(EIGHT_CHAR,LAST_CHAR,消息)
    如果 last_char. > message.长度 然后
       last_char =消息。长度
    结尾
    last_char.向下(EIGHT_CHAR.) |i|
        如果信息[一世, 1] ==. 然后
            返回 i
        结尾
      结尾
结尾


我将整个东西邮寄给你塞万提斯
WTD.




邮政发布: THU 1月4日,2007年12:12 AM  帖子主题:(没有主题)

代码:
def last_space.(EIGHT_CHAR,LAST_CHAR,消息)
   last_char = message.length如果last_char> message.length

    last_char.downto(beginning_char) do |i|
       返回i,如果消息[i,1] ==" "
      end
结尾


微笑
克莱顿




邮政发布: 2007年1月4日,2007年12:20  帖子主题:(没有主题)

这对速度有所不同吗?如果没有,那么我更喜欢我的方式,就像在一行中开始越来越多的代码后,事情开始变得不可读。
rdrake.




邮政发布: THU 1月4日,2007年12:37 AM  帖子主题:(没有主题)

弗雷克曼写道:
这对速度有所不同吗?如果没有,那么我更喜欢我的方式,就像在一行中开始越来越多的代码后,事情开始变得不可读。
我不相信,它只是看起来是餐厅。但是,如果它使代码更难理解,那么我不会打扰那么多的代码。
克莱顿




邮政发布: 2007年1月4日,2007年12:53  帖子主题:(没有主题)

正是,我可以一行,方法没有问题,我才喜欢不。当您尝试将所有代码达到一行时,它只是让它更难阅读 使困惑

对于那些不相信我的人 非难

红宝石:

def last_space(EIGHT_CHAR,LAST_CHAR,消息)last_char.。=消息。长度 如果 last_char. > message.长度 结尾last_char.。向下(EIGHT_CHAR.) {| I | 返回 i 如果信息[一世, 1] ==. 结尾} 结尾
塞万提斯




邮政发布: THU 1月4日,2007年1:58 PM  帖子主题:(没有主题)

你忘记了半冒号。该代码不会执行。
赞助
赞助
赞助
赞助
ericfourfour.




邮政发布: THU 1月4日,2007年5:16 PM  帖子主题:(没有主题)

对我来说,两者都做出平等的感觉,所以我更喜欢WTD的方式,因为它缩短了。

代码:
last_char.。= message.length if last_char > message.length
如果最后一个字符大于消息长度,则将消息长度分配给最后一个字符。

代码:
如果last_char.> message.length then
 last_char = message.Length.
结尾
如果最后一个字符大于消息长度,请将消息长度分配给最后一个字符。

你真的需要“然后”吗?
WTD.




邮政发布: THU 1月4日,2007年5:22 PM  帖子主题:(没有主题)

ericfourfour.写道:
你真的需要“然后”吗?


不,这在这种情况下并不严格必要。

哦,让我添加另一个:

代码:
last_char.。>message.length和last_char = message.Length
克莱顿




邮政发布: THU 1月4日,2007年7:28 PM  帖子主题:(没有主题)

塞万提斯写道:

你忘记了半冒号。该代码不会执行。


嘘!没有人注意到,所以让我们离开这一点 非难

主题:它甚至是如此有道理的方式,这只是我不喜欢在一条线上挤出不同的东西,如果我可以帮助它,我更喜欢用一条或两个表达/陈述只是让我更容易跟踪程序。
WTD.




邮政发布: THU 1月4日,2007年8:33 PM  帖子主题:(没有主题)

就在那之上,如果你只有“如果”分支,那么没有别的,*和*只有发生这种情况,如果这个条件是真的(或者如果它是假的,如果“除非使用”),则使用Postfix“如果”你避免了不必要的缩进水平和不必要的“结束”。这些添加的语法很大程度上增加了代码的视觉复杂性。
ericfourfour.




邮政发布: 星期五1月5日,2007年1:05 AM  帖子主题:(没有主题)

WTD写道:
哦,让我添加另一个:

代码:
last_char.。>message.length和last_char = message.Length

我知道它是如何工作的,但为什么会运行?我以为你只能用Booleans使用“和”。
ericfourfour.




邮政发布: 星期五2007年1月5日3:20  帖子主题:(没有主题)

好吧,我只是弄清楚它的所作所为,现在我实际上发现它很有用。而不是它返回nil,使其返回false。
塞万提斯




邮政发布: 星期五1月5日,2007年1:53下午1:53  帖子主题:(没有主题)

这是正确的:您只能使用Booleans使用“和”。但是,什么是布尔? 错误的 被定义为 错误的,还有其他一切都是 真的.


Freakman,你的Last_space方法本质上 弦#rindex.。使用这将使代码大大更好。 微笑
从上一个显示帖子:   
   指数 -> 编程,Ruby. -> 红宝石的帮助
查看上一个主题 告诉一个朋友可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题

11  [ 15 Posts ]
跳到:   


Style:  
搜索: