Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách sử dụng phương pháp Ruby Gets &Ruby Chomp

Bạn đang viết một chương trình Ruby và bạn muốn hỏi người dùng một câu hỏi…

Làm thế nào bạn có thể làm điều đó?

Bạn có thể sử dụng Ruby gets để đọc thông tin nhập của người dùng.

Bạn có thể gọi gets .

Sau đó, chương trình của bạn bắt đầu chờ bạn nhập nội dung nào đó bằng bàn phím và nhấn phím enter.

Kết quả?

Bạn nhận lại một chuỗi.

Chuỗi này có nội dung của những gì bạn (hoặc người dùng) đã nhập vào, vì vậy nếu bạn gán chuỗi này cho một biến, bạn sẽ có thể sử dụng nó.

Một ví dụ phổ biến là chương trình chào hỏi.

Có vẻ như thế này :

name = gets.chomp

puts "Hello #{name}, nice to meet you!"

#{name} thứ được gọi là nội suy chuỗi

Hãy thử cái này và tự mình xem nó hoạt động như thế nào.

  • Trước tiên, hãy lưu mã này vào tệp “welcome.rb”
  • Sau đó, sử dụng nó với “ruby welcome.rb” (từ một chương trình đầu cuối)

Nhập tên của bạn và chương trình của bạn sẽ chào đón bạn!

Khá tuyệt.

Bây giờ :

Đây là gì chomp kinh doanh tất cả về?

Đó là một phương thức Ruby thay đổi kết quả của gets theo một cách rất cụ thể.

Hãy thử xóa nó.

Bao gồm cả dấu chấm (. ) trước nó, vì vậy nó trở thành name = gets , thay vì name = gets.chomp .

Nếu bạn lưu mã của mình và chạy lại…

Bạn sẽ thấy rằng lời chào của bạn hiện được chia thành hai dòng, thay vì toàn bộ lời chào ở trong một dòng.

Có chuyện gì vậy?

Hãy đi sâu vào chi tiết để tìm hiểu!

Hiểu các dòng mới &các ký tự đặc biệt

Ruby đọc mọi thứ bạn nhập vào chương trình trong khi gets phương thức đang hoạt động.

Đối với chương trình lời chào của chúng tôi , điều này bao gồm tên của bạn.

Và một ký tự đặc biệt "dòng mới" làm cho thông điệp chào mừng được chia thành hai dòng!

Gặp ký tự dòng mới :

\n

Những loại ký tự đặc biệt này thường ẩn và chỉ hiển thị dưới dạng các dòng, khoảng trắng, màu mới, v.v.

Nếu bạn muốn nhìn thấy chúng, bạn cần một chiếc đèn pin thần kỳ có giá 10.000 đô la.

Đùa thôi!

Tất cả những gì bạn cần là p hoặc inspect phương pháp.

Ví dụ sử dụng :

p name
# "Jesus\n"

Đây rồi!

Ký tự “dòng mới” của chúng tôi (\n ).

Điều này đưa chúng tôi trở lại câu hỏi ban đầu của chúng tôi…

chomp là gì tất cả về?

Mục đích của chomp là xóa ký tự dòng mới ở cuối chuỗi.

Như bạn đã thấy, điều đó rất hữu ích!

Một ví dụ khác

Việc có ký tự dòng mới này hoặc một số ký tự đặc biệt khác, ảnh hưởng đến nhiều thứ hơn là cách một chuỗi trông như thế nào khi bạn in nó.

Nó cũng có thể ảnh hưởng đến câu lệnh if của bạn!

Ví dụ :

name = gets

if name == "David"
  puts "Hello David, we were expecting you!"
end

Trong mã này, nếu bạn không sử dụng chomp với gets , hai chuỗi sẽ không giống nhau vì ký tự dòng mới (\n ), vì vậy giá trị này là false .

Btw…

Điều này cũng áp dụng cho các chuỗi bạn nhận được bên ngoài gets , chẳng hạn như dữ liệu bạn nhận được từ việc đọc cơ sở dữ liệu, tệp hoặc bất kỳ nguồn nào khác.

Hãy để mắt đến những ký tự đặc biệt này!

Chomp vs Chop vs Strip

Hai phương pháp khác mà bạn có thể thấy hữu ích để làm sạch đầu vào của người dùng là chop &strip .

Với strip bạn có thể xóa khoảng trắng.

Ví dụ :

"    John Smith    ".strip

Với chop bạn sẽ luôn xóa ký tự cuối cùng.

Xóa ký tự đầu tiên

Một điều khác bạn có thể cần là xóa các ký tự ngay từ đầu.

Bạn có thể làm như thế này :

str = "Mr. John"

str[0..3] = ""

str
# "John"

Thao tác này sẽ xóa bốn ký tự đầu tiên.

Hai phương thức Gets? Cốt truyện dày lên!

Có một trường hợp đặc biệt…

Nơi bạn sẽ cần sử dụng $stdin.gets thay vì chỉ gets .

Nếu bạn gặp lỗi như thế này :

`gets': No such file or directory @ rb_sysopen

Tại sao?

Vì có hai phiên bản của gets phương pháp.

  • Phiên bản mặc định cố gắng đọc tên tệp
  • Phiên bản thay thế ($stdin.gets ) luôn đọc từ đầu vào của người dùng

Giờ thì bạn đã biết, nếu bạn gặp lỗi như vậy khi sử dụng gets , hãy thử thay đổi nó thành $stdin.gets .

Tóm tắt

Bạn đã tìm hiểu về các phương pháp get &chomp, những gì chúng làm, cách chúng hoạt động và tại sao chúng hữu ích!

Tiếp tục học với hướng dẫn Ruby này.

Cảm ơn vì đã đọc! 🙂